In PowerShell, all variable names start with the “$” character.
Creating a new variable can be done in several ways:
$MyVariable = SomeValue
$MyVariable = "Some String Value"
[DataType]$MyVariable = SomeValue
New-Item Variable:\MyVariable -value SomeValue
New-Variable:\MyVariable -value SomeValue
Variable names containing punctuation, can be handled with the syntax ${MyVari@ble} = SomeValue
However if the braces ${ } contain a colon ":" then powershell will treat the variable as a PATH and store the values directly in that file.
${C:\some_file.txt} = SomeValue
Operators allow you to assign a value to the variable, or perform mathematical operations:
Operator Description
= n Equals n
+= n Increase value by n (for strings will append n to the string)
-= n Decrease the value by n
*= n Multiply the value by n (for strings, duplicate the string n times)
/= n Divide the value by n
%= n Divide the value by n and assign the remainder (modulus)
Arithmetic operators:
+ Add, - Subtract, * Multiply, / Divide, % Mod(Remainder from a division)
Powershell will follow normal arithmetic precedence working left to right, parentheses can be used override this.
Examples
$myPrice = 128
$myPrice += 200
$myItem = "Barbecue grill"
$myDescription = $myItem + " $ " + $myPrice
$CastAsString = "55"
$myHexValue = 0x10
$myExponentialValue = 6.5e3
Strongly typed:
[int]$myPrice = 128
[string]$myDescription = "Barbecue grill"
[string]$myDescription = 123
[string]$myDate = (get-date).ToString("yyyyMM")
$([DateTime] "12/30/2009")
$([DateTime]::Now)
[datetime]$start_date=[datetime]::now.date.addDays(-5)
When creating strongly typed variables it's a good idea to indicate the datatype in the variable name: $strProduct or $intPrice
Array variables:
$myArray = "The", "world", "is", "everlasting"
Powershell can also assign values to multiple variables:
$varX, $varY = 64
$varA, $varB, $varC = 1, 2, 3
That will assign 1 to $varA, 2 to $varB, and 3 to $varC.
An entire script block can be stored in a variable: $myVar = { a bunch of commands }
Then run/call the script using &
PS C:\> & $myVar
You may want to take this a step further and turn the script block into a Function or Filter.
Automatic Variables
Automatic variables are created and maintained by PowerShell.
$_ Contains the current pipeline object, used in script blocks, filters, and the where statement.
$Args Contains an array of the parameters passed to a function.
$Error Contains objects for which an error occurred while being processed in a cmdlet.
$Home Specifies the user’s home directory.
$PsHome The directory where the PowerShell is installed.
A full list of automatic variables
Reserved Words - the following may not be used as identifiers (unless surrounded in quotes)
break, continue, do, else, elseif, for, foreach, function, filter, in, if, return, switch, until, where, while.
SET command (PowerShell function)
Here is a function to quickly list and set environment variables, like the old SET command (by Wes Haggard)
if (test-path alias:set) { remove-item alias:set > $null }
function set
{
[string]$var = $args
if ($var -eq "")
{get-childitem env: | sort-object name}
else
{
if ($var -match "^(\S*?)\s*=\s*(.*)$")
{set-item -force -path "env:$($matches[1])" -value $matches[2];}
else
{write-error "ERROR Usage: VAR=VALUE"}
}
}
PS C:\> Set testing=abc
“Most variables can show either an upward trend or a downward trend, depending on the base year chosen” - Thomas Sowell
Related:
Reference variables - Change the value of a passed variable
Set-PSBreakpoint - Set a breakpoint on a line, command, or variable
Get-Item Variable:
Clear-Variable - Remove the value from a variable
Get-Variable - Get a powershell variable
New-Variable - Create a new variable
Remove-Variable - Remove a variable and its value
Set-Variable - Set a variable and a value