Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

A primer and 60-second crash course for casual users of PowerShell

Notifications You must be signed in to change notification settings

kesac/powershell-primer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

Overview

  • This is a primer for casual users of PowerShell
  • It serves as a refresher for basic syntax
  • Reading time: 60 seconds

Contents


1. Variables

$example = "World";       # Variable names start with $
$digits  = 12345          # Semicolons are optional
$output  = Get-Help       # Variables also store the output of commands

2. Strings

# Initialization
$example = "World"        # Quotes make strings
$example = 'World'        # Single quotes make strings too

"Hello $example"          # This becomes 'Hello World'
'Hello $example'          # But this stays as 'Hello $example'

# Operations
"Hello" + $example        # Use '+' to join strings
$example.Substring(0, 2)  # Strings have methods. This returns 'Wo'
$example.Replace("l","")  # And this returns 'Word'

# Comparison
$example.StartsWith("W")  # Returns true
$example.Contains("or")   # Returns true too
$example.EndsWith("ld")   # Returns true as well

3. Arrays

# Initialization
$items = @()              # Creates an empty array
$stock = @("C","D","E")   # Creates an array with existing elements
$stock.Length             # Returns 3
$stock[0]                 # Returns 'C'

# Operations
$items = $items + "A"     # This adds 'A' to the empty array
$items += "B"             # This adds 'B'
$items += $stock          # Array now has 'A', 'B', 'C', 'D', 'E'
$items -contains "C"      # Returns true

4. Hashtables

# Initialization
$table = @{}               # Creates an empty hashtable

$table.Planet = 'Earth'    # Adds a key-value pair 
$table['Dog'] = 'Corgi'    # Also adds a key-value pair

$table = @{                # Same as everything above, but combined
    Planet = 'Earth';      # Semicolons are needed to separate pairs here
    Dog    = 'Corgi';
}

# Properties
$table.Keys                # Returns Planet, Dog
$table.Values              # Returns Earth, Corgi
$table.Count               # Returns 2
$table.ContainsKey('Dog')  # Returns true

5. Input

$data = Read-Host              # Captures user input from console
$data = Get-Content notes.txt  # Captures contents of a file
$data = cat notes.txt          # This Unix-like alias also works
$data = cat "notes.txt"        # Quotes around the filename works too

6. Output

Write-Host $data      # Writes to console
echo $data            # This alias also writes to console
$data >> notes.txt    # Writes to a file, appending to it
$data > notes.txt     # Writes to a file, overwriting it
$data | Some-Command  # Pipes to a PowerShell command

7. Basic Operators

# The usual math operators exist
$value = (5 + 3) - 1  # Evaluates to 7
$value = (6 / 3) * 2  # Evaluates to 4
$value = 10 % 4       # Evaluates to 2 (modulo)

# Incrementing/decrementing
$value++   # Goes up by 1
$value--   # Goes down by 1

# Operators for equality and boolean logic
$value -gt 0            # True if $value is a positive number
$value -eq 42           # True if $value is 42
!($value -eq 42)    # Negation for previous statement

# Commonly used operators
-and     # Logical And
-or      # Logical Or
-not, !  # Negation
-eq      # Equal to
-ne      # Not equal to
-gt      # Greater than
-lt      # Less than
-ge      # Greater than or equal
-le      # Less than or equal

8. Branching

# The usual if-else statements will work, but 
# in this language, 'elseif' has no space in it

if (-not $value) {
    # Executed if $value is not defined
}
elseif (($value % 14) -eq 0) {
    # Executed if $value is divisible by 14
}
else {
    # Executed if no other condition matched
}

9. Looping

# This language supports the classic for-loop
# plus the foreach-loop as a bonus

for ($i = 0; $i -lt 10; $i++) {
    echo $i
}

foreach ($item in $array) {
    echo $item
}

# Classic while-loops and do-loops also work

while ($number -lt 10) {
    $number++
}

do {
    $number--
} while($number -gt 0)

10. Functions

# Declares a basic function
function Show-Message { 
    echo "Hello World"
}

# Call the function using its name
Show-Message  

# Defines a function with arguments and a return value
function Get-Message {
    param(
        $Greeting,
        $Name
    )         
    return "$Greeting $Name"
}

# Call the function with arguments
Get-Message -Greeting "Hello" -Name "World"

# Using positional arguments also works
Get-Message "Hello" "World"

11. Scripts

# Use the & operator to execute scripts
& "/Path/To/Script.ps1"

# This would work too:
$script = "/Path/To/Script.ps1" 
& $script

# Like functions, scripts can accept arguments
& $script -Greeting "Hello" -Name "World"

12. Comments

# This is a single line comment.
# And here is another single line comment.

<#
   Here is a multi-line comment block.
   Everything inside this block will
   be ignored!
#>

And you're done!

Morty Proxy This is a proxified and sanitized view of the page, visit original site.