Windows Resources
https://learn.microsoft.com/en-us/powershell/scripting/learn/ps101/00-introduction?view=powershell-7.3
Basic Commands[1]
Cmdlet #Commands built into shell written in .NET
Functions #Commands written in PowerShell language
Parameter #Argument to a Cmdlet/Function/Script
Alias #Shortcut for a Cmdlet or Function
Script #Text files with .ps1 extension
Applications #Existing windows programs
Pipelines #Pass objects Get-process word | Stop-Process
Ctrl+c #Interrupt current command
Left/Right #Navigate editing cursor
Ctrl+Left/Right #Navigate a word at a time
Home/End #End Move to start / end of line
Up/Down #Move up and down through history
Insert #Toggles between insert/overwrite mode
F7 #Command history in a window
Tab/Shift-Tab #Command line completion
Variables
$var = "string" #Assign Variable
$a,$b = 0 or $a,$b = 'a','b' #Assign Multiple Variables
$a,$b = $b,$a #Flip Variables
$var=[int]5 #Strongly Typed Variable
Help
Get-Command #Get all commands
Get-Command -Module RGHS #Get all commands in RGHS module
Get-Command Get-p* #Get all commands starting with get-p
Get-help get-process #Get help for command
Get-Process | Get-Member #Get members of the object
Get-Process| format-list -properties * #Get-Process as list with all properties
Scripts
Set-ExecutionPolicy -ExecutionPolicy #Bypass set ExecutionPolicy to allow all scripts
."\\c-is-ts-91\c$\scripts\script.ps1” #Run Script.ps1 script in current scope
&"\\c-is-ts-91\c$\scripts\script.ps1" #Run Script.ps1 script in script scope
.\Script.ps1 #Run Script.ps1 script in script scope
$profile #Your personal profile that runs at launch
Import, Export, Convert
Export-CliXML Import-CliXML
ConvertTo-XML ConvertTo-HTML
Export-CSV Import-CSV
ConvertTo-CSV ConvertFrom-CSV
Flow Control
If(){} Elseif(){ } Else{ }
while(){}
For($i=0; $i -lt 10; $i++){}
Foreach($file in dir C:\){$file.name}
1..10 | foreach{$_}
Comments, Escape Characters
#Comment #Just a comment
<#comment#> #Multiline Comment
"`"test`"" #Escape char`
`t #Tab
`n #New line
` #Line continue
Parameters
-Confirm #Prompt whether to take action
-WhatIf #Displays what command would do
Assignment, Logical, Comparison
=, +=, -=, ++,-- #Assign values to variable
-and, -or, -not,! #Connect exressions / statements
-eq, -ne #Equal, not equal
-gt, -ge #Greater than, greater than or equal
-lt, -le #Less than, less than or equal
-replace #"Hi" -replace "H","P"
-match, -notmatch #Regular expression match
-like, -notlike #Wildcard matching
-contains, -notcontains #Check if value in array
-in, -notin #Reverse of contains, notcontains
Common Cmdlets
cd, chdir, sl #Set-Location
cat, gc, type #Get-Content
ac #Add-Content
sc #Set-Content
copy, cp, cpi #Copy-Item
del, erase, rd, ri, rm, rmdir #Remove-Item
mi, move, mv #Move-Item
si #Set-Item
ni #New-Item
sleep #Start-Sleep
sajb #Start-Job
compare, diff #Compare-Object
group #Group-Object
curl, iwr, wget #Invoke-WebRequest
measure #Measure-Object
nal #New-Alias
rvpa #Resolve-Path
rujb #Resume-Job
set, sv #Set-Variable
shcm #Show-Command
sort #Sort-Object
sasv #Start-Service
saps, start #Start-Process
sujb #Suspend-Job
wjb #Wait-Job
?, where #Where-Object
echo, write #Write-Output
Common Aliases
gcm #Get-Command
foreach,% #Foreach-Object
sort #Sort-Object
where, ? #Where-Object
diff, compare #Compare-Object
dir, ls, gci #Get-ChildItem
gi #Get-Item
copy, cp, cpi #Copy-Item
move, mv, mi #Move-Item
del, rm #Remove-Item
rni, ren #Rename-Item
fFt #Format-Table
fl #Format-List
gcim #Get-CimInstance
cat, gc, type #Get-Content
sc #Set-Content
h, history, ghy #Get-History
ihy, r #Invoke-History
gp #Get-ItemProperty
sp #Set-ItemProperty
pwd, gl #Get-Location
gm #Get-Member
sls #Select-String
cd, chdir, sl #Set-Location
cls, clear #Clear-Host
Array Objects
$arr = "a", "b" #Array of strings
$arr = @() #Empty array
$arr[5] #Sixth array element
$arr[-3..-1] #Last three array elements
$arr[1,4+6..9] #Elements at index 1,4, 6-9
$arr[1] += 200 #Add to array item value
$z = $arA + $arB #Two arrays into single array
[pscustomobject]@{x=1;z=2} #Create custom object
(Get-Date).Date #Date property of object
Writing Output and Reading
"This displays a string" #String is written directly to output
Write-Host "color" -ForegroundColor Red -NoNewLine #String with colors, no new line at end
$age = Read-host "Please enter your age" #Set $age variable to input from user
$pwd = Read-host "Please enter your password" -asSecureString #Read in $pwd as secure string
Clear-Host #Clear Console