PowerShell comes with a number of predefined aliases that can make typing easier. For example, running Gwmi takes less time than typing Get-Wmiobject. This is a definite Unix mentality that values speedy typing over clarity or easy-to-read script. However, speedy typing does save time. Also, if you're just using the shell interactively, there's little reason to care what anyone else thinks about how clear or easy-to-read your script is! The Get-Alias cmdlet shows you all the predefined aliases, as well as any you've added yourself:
PS C:\> get-alias CommandType Name Definition ----------- ---- ---------- Alias ac Add-Content Alias asnp Add-PSSnapin Alias clc Clear-Content Alias cli Clear-Item Alias clp Clear-ItemProperty Alias clv Clear-Variable Alias cpi Copy-Item Alias cpp Copy-ItemProperty Alias cvpa Convert-Path Alias diff Compare-Object Alias epal Export-Alias Alias epcsv Export-Csv Alias fc Format-Custom Alias fl Format-List Alias foreach ForEach-Object Alias % ForEach-Object Alias ft Format-Table Alias fw Format-Wide Alias gal Get-Alias Alias gc Get-Content Alias gci Get-ChildItem Alias gcm Get-Command Alias gdr Get-PSDrive Alias ghy Get-History Alias gi Get-Item Alias gl Get-Location Alias gm Get-Member Alias gp Get-ItemProperty Alias gps Get-Process Alias group Group-Object Alias gsv Get-Service Alias gsnp Get-PSSnapin Alias gu Get-Unique Alias gv Get-Variable Alias gwmi Get-WmiObject Alias iex Invoke-Expression Alias ihy Invoke-History Alias ii Invoke-Item Alias ipal Import-Alias Alias ipcsv Import-Csv Alias mi Move-Item Alias mp Move-ItemProperty Alias nal New-Alias Alias ndr New-PSDrive Alias ni New-Item Alias nv New-Variable Alias oh Out-Host Alias rdr Remove-PSDrive Alias ri Remove-Item Alias rni Rename-Item Alias rnp Rename-ItemProperty Alias rp Remove-ItemProperty Alias rsnp Remove-PSSnapin Alias rv Remove-Variable Alias rvpa Resolve-Path Alias sal Set-Alias Alias sasv Start-Service Alias sc Set-Content Alias select Select-Object Alias si Set-Item Alias sl Set-Location Alias sleep Start-Sleep Alias sort Sort-Object Alias sp Set-ItemProperty Alias spps Stop-Process Alias spsv Stop-Service Alias sv Set-Variable Alias tee Tee-Object Alias where Where-Object Alias ? Where-Object Alias write Write-Output Alias cat Get-Content Alias cd Set-Location Alias clear Clear-Host Alias cp Copy-Item Alias h Get-History Alias history Get-History Alias kill Stop-Process Alias lp Out-Printer Alias ls Get-ChildItem Alias mount New-PSDrive Alias mv Move-Item Alias popd Pop-Location Alias ps Get-Process Alias pushd Push-Location Alias pwd Get-Location Alias r Invoke-History Alias rm Remove-Item Alias rmdir Remove-Item Alias echo Write-Output Alias cls Clear-Host Alias chdir Set-Location Alias copy Copy-Item Alias del Remove-Item Alias dir Get-ChildItem Alias erase Remove-Item Alias move Move-Item Alias rd Remove-Item Alias ren Rename-Item Alias set Set-Variable Alias type Get-Content
Some of these aliases are really not obvious. For example, what would you make of an alias that looked like this?
$g = gwmi win32_service % ($s in $g) { spsv $s }
Expanding all those aliases makes it easier to read:
$g = get-wmiobject win32_service Foreach-object ($s in $g) { stop-service $s }
In fact, this is something that SAPIEN PrimalScript 4.1 (or later) can do for you: It will automatically replace aliases with their full cmdlet names or contract cmdlets down to their available aliases. This helps you switch your script between "concise" and "clear" modes with a single menu option. Giving your variables useful names makes it even easier to follow:
$services = get-wmiobject win32_service Foreach-object ($service in $services) { stop-service $service }
Renaming your variables isn't something a script development environment can do automatically. However, if you're careful when writing scripts, you'll find yourself doing this automatically.