Access documentation
Open browser with help page about a command
Get-Help Get-Process -Online- abbreviate as
help Get-Process -Online - opens Get-Process - Microsoft Learn
Find commands related to a topic
Get-Command -Noun Process*-
abbreviate as
gcm -Noun Process* -
outputs Debug-Process, Get-Process, Get-ProcessMitigation, Start-Process, …
-
Learn and Troubleshoot Powershell - Discover commands, and access documentation
Get object properties
List available properties, methods for an object or command
h | Get-Member -MemberType Properties- abbreviate as
h | gm - outputs Attributes, CreationTime, CreationTimeUtc, Exists, Extension, FullName, …
Output a property
$o = Get-Item .
$o.Attributes- one-liner:
Get-Item . | select -expand Attributes
Configuration and Variables
Log to file
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['Set-Content:Encoding'] = 'utf8'
"Hallo und Tschüss!" >> "test.log"- Set encoding, as PowerShell 5 uses different ones by default
Bundle configuration variables as the start of a script
$CONFIG = [PSCustomObject]@{
SourcePath = "E:\Data\Analytics\SourceData"
LogFile = "C:\scripts\DataExport.log"
MaxLogLines = 1000
}Error Handling
Stop on any error
$ErrorActionPreference = [Management.Automation.ActionPreference]::StopDetect errors
try {
Get-Content "file-that-might-not-exist.txt" -ErrorAction Stop
} catch {
Write-Output "Error: $_"
} finally {
Write-Output "Operation complete"
}Comparison Operators
# String comparisons
"Text" -eq "text" # Case-insensitive equal (True)
"Text" -ceq "text" # Case-sensitive equal (False)
"Hello" -like "H*" # Wildcard match (True)
"abc" -match "^a" # RegEx match (True)
# Numeric comparisons
5 -gt 2 # Greater than (True)
5 -ge 5 # Greater than or equal (True)
5 -lt 10 # Less than (True)
# Logical operators
$true -and $false # Logical AND (False)
$true -or $false # Logical OR (True)
-not $true # Logical NOT (False)