# 2. Variables and data types¶

Note

The below information is extensively based in information taken from the PowerShell® Notes for Professionals book. I plan to extend this information based on my day to day usage of the language.

Variables are used for storing values. Let the value be of any type , we need to store it somewhere so that we can

 1 $foo = "bar"  This statement allocates a variable called foo with a string value of "bar". ## 2.2: Arrays¶ Array declaration in Powershell is almost the same as instantiating any other variable, i.e. you use a$name = syntax.

The items in the array are declared by separating them by commas(,):

 1 2 $myArrayOfInts = 1 , 2 , 3 , 4$myArrayOfStrings = "1","2","3","4" 

Adding to an array is as simple as using the + operator:

 1 2 $myArrayOfInts =$myArrayOfInts + 5 # now contains 1,2,3,4 & 5! 

Combining arrays together

Again this is as simple as using the + operator

 1 2 3 4 $myArrayOfInts = 1 , 2 , 3 , 4$myOtherArrayOfInts = 5 , 6 , 7 $myArrayOfInts =$myArrayOfInts + $myOtherArrayOfInts # now 1,2,3,4,5,6,  ## 2.3: List Assignment of Multiple Variables¶ Powershell allows multiple assignment of variables and treats almost everything like an array or list. This means that instead of doing something like this:  1 2 3 4 5 $input = "foo.bar.baz" $parts =$input.Split(".") $foo =$parts[ 0 ] $bar =$parts[ 1 ] $baz =$parts[ 2 ] 

You can simply do this:

 1 $foo,$bar, $baz =$input.Split(".") 

Since Powershell treats assignments in this manner like lists, if there are more values in the list than items in your list of variables to assign them to, the last variable becomes an array of the remaining values. This means you can also do things like this:

  1 2 3 4 5 6 7 8 9 10 $foo = "Global Scope" function myFunc {$foo = "Function (local) scope" Write-Host $global:foo Write-Host$local:foo Write-Host $foo } myFunc Write-Host$local:foo Write-Host $foo  Output: Global Scope Function (local) scope Function (local) scope Global Scope Global Scope ## 2.5: Removing a variable¶ To remove a variable from memory, one can use the Remove-Item cmdlet. Note: The variable name does NOT include the$.

 1 Remove-Item Variable:\foo 

Variable has a provider to allow most *-item cmdlets to work much like file systems.

Another method to remove variable is to use Remove-Variable cmdlet and its alias rv

 1 2 $var = "Some Variable" #Define variable 'var' containing the string 'Some Variable'$var #For test and show string 'Some Variable' on the console 
 1 2 Remove-Variable -Name var $var   1 2 #also can use alias 'rv' rv var  ## 2.6: Data types¶ While developing scripts, you may run into instances where you may want to force a specific data type. This is helpful in cases where PowerShell automatically interprets the output from a command incorrectly. You can force data types by the use of brackets specifying a data type and a variable. There are a variety of data types that you can force within PowerShell. The following table represents the common data types for use with PowerShell and an explanation and an example of its use: Data type Explanation Example$a value
[string] String of Unicode characters [string]$a = "Hello" Hello [char] A Unicode 16-bit character [char]$a = 0xA9 ©
[byte] An 8-bit character [byte]$a = 0x0001D 29 [int] 32-bit integer [int]$a = 12345 12345
[long] 64-bit integer [long]$a = 1234.243 1234 [bool] Boolean True/False value [bool]$a = 1 True
[decimal] A 128-bit decimal [decimal]$a = 1234.243 1234.243 [single] A single-precision 32-bit number [single]$a = 1234.243 1234.243
[double] A double-precision 64-bit number [double]$a = 1234.243 1234.243 [datetime] A data time value [datetime]$a = "01-APR-2014" Tuesday, April 1, 2014 12:00:00 AM
[xml] A XML-styled value [xml]$a = "Testing"
$
a.test.a
Testing
[array] An array-styled value [array]$a = 1,2,3 1 2 3 [hashtable] A hashtable-styled value [hashtable]$a = @{"Old" = "New"} Name | Value
---------|---------
Old | New