Windows Powershell Commands for Beginners

myTectra
Quick Code
Published in
6 min readAug 26, 2019

Agenda

  • Introduction of Powershell
  • Need of PowerShell
  • BackGround of Powershell
  • Why its better than alternatives?
  • Top Most Administrative Powershell Commands
  • Working with Pipeline
  • Selecting, Sorting, Measuring, Exporting, Importing, Converting, Filtering, Passing Data in Pipeline.
  • Using PS providers and PSDrives
  • Formatting Output
  • Introduction of WMI (Windows Management Instrumentation)
  • Looping (For/ For-each/While)
  • Take user Input
  • Display Output
  • This Shell is Command-line based or can be included in GUI.
  • Developed by Microsoft
  • Based on the .Net Framework
  • It includes Scripting.
  • Capability to interact with another Windows-based Softwares, for instances:-
  • Citrix, SQL, AD, any open APIs like Slack, etc.

What’s Need?

  • Microsoft describes PowerShell as “a task-based command-line shell and scripting language… built on the .NET Framework.” What is so great about PowerShell? Why should you use it?
  • PowerShell is both a command-line shell and scripting language
  • PowerShell can interact with a dizzying number of technologies.
  • .NET Framework, the Registry, COM, WMI, ADSI. Exchange, Sharepoint, Systems Center, Hyper-V, SQL. , Cisco UCS, Citrix XenApp, and XenDesktop. REST APIs, XML, CSV, JSON, websites, Excel and other Office applications. , DLLs and other binaries, including *nix tools.
  • PowerShell is object-based. This gives us incredible flexibility. Filter, sort, measure, group, compare or take other actions on objects as they pass through the pipeline. Work with properties and methods rather than raw text.
  • Microsoft is putting its full weight behind PowerShell.PowerShell isn’t going away. It is a requirement in the Microsoft Common Engineering Criteria, and a Server product cannot be shipped without a PowerShell interface.
  • In many cases, Microsoft is building its GUI with the help of Powershell only. Here we can perform more than what we think on GUI.
  • PowerShell also provides a hosting with which the PowerShell runtime can be embedded inside other applications.

BackGround

  • Every released version of Microsoft DOS and Microsoft Windows for personal computers has Shell, so till Windows9x, it was relying on Command.com and later on in NT family it came as cmd.exe
  • In 1998, MS launched Cscript.exe to allow compatible scripting languages like Jscript and VBScript.
  • By 2002 Microsoft had started to develop a new approach to command line management, including a shell called Monad (also known as Microsoft Shell or MSH)
  • PowerShell version 1 was released on September 26, 2006, but officially released on Nov 14, 2006.
  • PowerShell v2.0 was completed and released to manufacturing on August 2009, as an integral part of Windows 7 and Windows Server 2008 R2
  • On 18 August 2016, Microsoft announced that they had made PowerShell open-source and cross-platform with support for Windows, OS X, CentOS, and Ubuntu.
  • The move to open source created a second incarnation of PowerShell called “PowerShell Core”, which runs on .NET Core. It is distinct from “Windows PowerShell”, which runs on the full .NET Framework. Starting with version 5.1, PowerShell Core is bundled with Windows Server 2016 Nano Server.

Inbuilt Tools

*Powershell is better than its legacy alternatives like -VBScripting, Bash

*Consistent syntax, consistent command structure

*Future-proof through .NET integration

*Support through help and documentation (Get-Help)

Easy to find out anyway, just a clue is required. (Get-Command “*Service*” )

  1. Navigate the Windows Registry like the file system: cd hkcu:
  2. Search recursively for a certain string within files: dir -r | select string “search for this”
  3. Find the five processes using the most memory: ps | sort -p ws | select -last 5
  4. Cycle a service (stop, and then restart it) like DHCP: Restart-Service DHCP
  5. List all items within a folder: Get-ChildItem — Force
  6. Recurse over a series of directories or folders: Get-ChildItem -Force c:\directory -Recurse
  7. Remove all files within a directory without being prompted for each: Remove-Item C:\tobedeleted -Recurse
  8. Restart the current computer:(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
  • Get information about the make and model of a computer: Get-WmiObject -Class Win32_ComputerSystem
  • Get information about the BIOS of the current computer: Get-WmiObject -Class Win32_BIOS -ComputerName.
  • List installed hotfixes — QFEs, or Windows Update files: Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName.Get the username of the person currently logged on to a computer:
  • Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
  • Find just the names of installed applications on the current computer:
  • Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
  • Get IP addresses assigned to the current computer:Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
  • Get a more detailed IP configuration report for the current machine:Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
  • Find network cards with DHCP enabled on the current computer:Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter “DHCPEnabled=true” -ComputerName .
  • Enable DHCP on all network adapters on the current computer:
  • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}

Software management

  • Install an MSI package on a remote computer:(Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq “Win32_Product”}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  • Upgrade an installed application with an MSI-based application upgrade package:
  • (Get-WmiObject -Class Win32_Product -ComputerName . -Filter “Name=’name_of_app_to_be_upgraded’”).Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  • Remove an MSI package from the current computer:(Get-WmiObject -Class Win32_Product -Filter “Name=’product_to_remove’” -ComputerName . ).Uninstall()

$var = Read-Host -AsSecureString

Filtering

foreach($element in 1..9){

Write-Host -NoNewLine “${element} “

Start-Sleep -Seconds 1

Write-Host “”

Write-Output

Loops

While/ Do-While Loop

$val++ Write-Host $val

} while($val -ne 10)

Importing

Originally published at https://www.mytectra.com.

--

--

myTectra
Quick Code

myTectra is a Bangalore based skills development company helps transform people and organization to gain real, lasting benefits .