Powershell: Difference between revisions

From miki
Jump to navigation Jump to search
Line 3: Line 3:


== Reference ==
== Reference ==

=== Files ===
Powershell scripts have a {{file|.ps1}} extension.

=== Syntax ===
{{Note|See learn Powershell in Y minutes for more!}}
{{Note|See learn Powershell in Y minutes for more!}}



Revision as of 13:20, 22 February 2022

Links

Reference

Files

Powershell scripts have a .ps1 extension.

Syntax

 ✐  See learn Powershell in Y minutes for more!
# Documentation, information
Update-Help              # Update help system - to run as Administrator
help Test-Path           # Get help on a command, on an alias...
help Test-Path -full     # ... and on all options
help Test-Path -examples # ... see examples. VERY USEFUL. Eg. help save-help examples

Get-Command about_*      # DOES NOT WORK
Get-Command -Verb Add

Get-Alias ps                      # 'Get-Process'
Get-Alias -Definition Get-Process # 'ps'
gal | findstr Get-Process         # Unix style

ps | Get-Member

# Frequent aliases
#   gcm    ->  Get-Command
#   ps     ->  Get-Process
#   help   ->  Get-Help
#   help   ->  man
#   alias  ->  Get-Alias
#   gal    ->  Get-Alias
#   gm     ->  Get-Member
#   ni     ->  New-Item
#   md     ->  New-Item
#   mkdir  ->  New-Item
#   del    ->  Remove-Item
#   erase  ->  Remove-Item
#   rd     ->  Remove-Item
#   ri     ->  Remove-Item
#   rm     ->  Remove-Item
#   rmdir  ->  Remove-Item
#   where  ->  Where-Object
#   dir    ->  Get-ChildItem
#   ls     ->  Get-ChildItem
#   gci    ->  Get-ChildItem
#   echo   ->  Write-Output
#   write  ->  Write-Output

# Options can be abbreviated
Get-Alias -Definition Get-Process
gal -def Get-Process

# Grep-like
gal | findstr Get-Process
gal | where {$_.Definition -eq 'Get-Help'}
dir Alias: | where {$_.Definition -eq 'Get-Help'}

# Strings
$hello = "Hello"
$world = "World"
'Hello, World!'                        # No interpolation
"Hello, $world!"                       # 'Hello, World!'
"Hello, World!".Length                 # Length
"{0}, {1}!" -f $hello, $world          # f-string
"$world is $($world.length) char long"
'Hello, World!'[0]                     # 'H'
'Hello, World!'[0..5]                  # 'H', 'e', 'l', 'l', 'o'
'Hello, World!'.Substring(0,5          # 'Hello'
'Hello, ' + 'World!'                   # 'Hello, World!'
'First line`nSecond line'              # Escape with backtick
"foo" | gm                             # Get all methods / properties

# read / write
Write-Output "Hello World!"            # alias: echo, write
$foo = Read-Host "Enter foo"
$bar = Read-Host ("Enter {0}" -f $foo)

Tips

Measure execution time of a command

Measure-Command { dir }
Measure-Command { dir | Out-default}   # To get output
Measure-Command { choco list }

Update help on offline computers

From MS devblogs:

<source lang="powershell">

  1. On online computer

New-Item c:\tmp\help Save-Help -DestinationPath c:\tmp\help -Module * -Force

  1. On offline computer
  2. ... transfer files to c:\tmp\help
  3. ... start powershell in admin (Win-X-A)

Update-Help -SourcePath c:\tmp\help -Module * -Force </source