上一節介紹了Powershell中的內置變量,細節使勁戳這裏。
shell
本節介紹Powershell中的賦值運算符,賦值運算符可向一個變量賦予一個或多個值。賦值運算符能夠在賦值以前對值執行數值運算。數組
Powershell支持如下賦值運算符。
app
運算符 | 說明 | 備註 |
= | 將變量的值設置爲指定值。 | |
+= | 使變量的值增長指定值,或將指定值追加到現有值。 | |
-= | 使變量的值減小指定值。 | |
*= | 將變量的值與指定值相乘,或將指定值追加到現有值。 | 第二個操做數必須是數字,詳細內容參考Powershell賦值運算符(二) |
/= | 將變量的值除以指定值。 | 兩個操做數都必須是數字,詳細內容參考Powershell賦值運算符(二) |
%= |
將變量的值除以指定值,而後將餘數(模)賦予變量。 | 兩個操做數都必須是數字,詳細內容參考Powershell賦值運算符(二) |
++ | 使變量、可賦值屬性或數組元素的值增長 1。 | 一元運算符,有前綴和後綴的形式,而且可賦值表達式必須是數字或是能夠轉換爲數字。 |
-- |
使變量、可賦值屬性或數組元素的值減小 1。 | 一元運算符,有前綴和後綴的形式,而且可賦值表達式必須是數字或是能夠轉換爲數字。 |
賦值運算符的語法ide
賦值運算符的語法以下:
spa
<可賦值表達式><賦值運算符(上表格列出的內容)><值>,
對象
可賦值表達式包括變量和屬性,值能夠是單個值,值數組,也能夠是命令,表達式或是語句,例如blog
PS C:\> $a=1 PS C:\> $pro=Get-Process PS C:\> $a="apple","orange","lemon","grape"
2. 賦值運算符(=)排序
變量是存儲值的內存空間,使用賦值運算符能夠將值存儲在變量中,新值能夠替換變量的現有值,也能夠將值追加到現有值。例如如下語句將字符串"Powershell"賦值給變量$myStr
索引
PS C:\> $myStr="Powershell"
PowerShell 中向變量賦值時,若是該變量不存在,則會建立該變量。例如,下面兩條賦值語句中的第一條建立 $a 變量並將值 1 賦予 $a。第二條賦值語句將值 3 賦予 $a。第一條語句建立一個新變量。第二條語句只更改該變量的值:three
PS C:\> $a=1 PS C:\> $a=3
PowerShell 中的變量沒有特定數據類型,除非進行轉換。若是變量僅包含一個對象,則變量採用該對象的數據類型。若是變量包含對象集合,則變量爲 System.Object 數據類型。所以,能夠向該集合賦予任何類型的對象。例以下面的語句能夠向變量添加進程對象、服務對象、字符串和整數,而不會生成錯誤:
PS C:\> $a=Get-Process PS C:\> $a+=Get-Service PS C:\> $a+="my string" PS C:\> $a+=13
賦值運算符 (=) 的優先級低於管道運算符 (|),因此在將命令管道的結果賦予變量時不須要圓括號。例如,下面的命令對計算機上的進程進行排序,而後將排序後的進程賦予 $a 變量:
PS C:\> $a=Get-Process | Sort-Object -Property name
還能夠將語句建立的值賦予變量,以下面的語句所示
PS C:\> $a=if($b -lt 0) { 0 } else { $b }
-lt 是 less then 的縮寫,至關於高級語言中的<=,會在Powershell的比較運算符中講到。上面語句的意思是若是$b 的值小於 0 時將 0 賦予 $a 變量。若是 $b 的值不小於零,則將 $b 的值賦予 $a。
若是要將哈希表賦予變量,請使用 PowerShell 中的標準哈希表表示法。一個 at 符號 (@),在其後鍵入使用分號 (;) 分隔、括在大括號 ({ }) 內的鍵/值對。例如,下面的語句將哈希表賦予 $a 變量:
PS C:\> $a=@{one=1; two=2;three=3}
若是要將十六進制值賦予變量,請在值前面加上"0x"。PowerShell 會將十六進制值 (0x10) 轉換爲十進制值(本例中爲 16),而後將該值賦予 $a 變量。例如,如下語句將值 0x10 賦予變量 $a:
PS C:\> $a=0x10 PS C:\> $a 16
若是要將指數值賦予變量,須要輸入根數字、字母"e"和一個表示 10 的倍數的數字。例如,若要將 3.1415 的 100 次冪值賦予 $a 變量,請輸入:
PS C:\> $a=3.1415e2 PS C:\> $a 314.15
PowerShell 中還能夠將千字節 (KB)、兆字節 (MB) 和千兆字節 (GB) 轉換爲字節。例如,如要將值 10 千字節賦予 $a 變量,請輸入:
PS C:\> $a=10kb
3. 加法賦值運算符(+=)
加法賦值運算符 (+=) 可增長變量的值或將指定值追加到現有值。具體操做取決於變量是數字仍是字符串類型,以及變量是包含單個值(標量)仍是多個值(集合)。+=運算符組合了兩個運算。首先執行加法,而後賦值。所以,如下語句是等效的。
PS C:\> $a+=2 PS C:\> $a=($a+2)
若是變量包含單個數字值,則 += 運算符使現有值增長該運算符右側的數量。將運算符將獲得的值賦予變量。例如:
PS C:\> $a=5 PS C:\> $a+=3 PS C:\> $a 8
若是變量的值是字符串,則將該運算符右側的值追加到該字符串,以下所示:
PS C:\> $a="Windows" PS C:\> $a+=" Powershell" PS C:\> $a Windows Powershell
若是變量的值是數組,則 += 運算符將其右側的值追加到數組。除非經過轉換顯式指定數組的類型,不然能夠將任何類型的值追加到數組,以下所示:
PS C:\> $a=1,2,3 PS C:\> $a+=4 PS C:\> $a 1 2 3 4 PS C:\> $a+="string" PS C:\> $a 1 2 3 4 string
若是變量的值是哈希表,則 += 運算符將其右側的值追加到該哈希表。不過,由於只能向哈希表添加另外一個哈希表,因此全部其餘賦值都會失敗。
例如,下面的命令將哈希表賦予 $a 變量。而後,該命令使用 += 運算符將另外一個哈希表追加到現有哈希表,其實是將一個新鍵/值對添加到現有哈希表。此命令成功,輸出以下所示:
PS C:\> $a=@{a=1;b=2;c=3} PS C:\> $a+=@{four="4"} PS C:\> $a Name Value ---- ----- a 1 b 2 four 4 c 3
下面的命令試圖將一個整數 (1) 追加到 $a 變量中的哈希表。此命令將失敗:
PS C:\> $a=@{a=1; b=2; c=3} PS C:\> $a+1 只能向哈希表添加另外一個哈希表。 所在位置 行:1 字符: 4 + $a+ <<<< 1 + CategoryInfo : InvalidOperation: (1:Int32) [], RuntimeException + FullyQualifiedErrorId : AddHashTableToNonHashTable
4. 減法賦值運算符 (-=)
減法賦值運算符 (-=) 使變量的值減小在該運算符右側指定的值。此運算符不能用於字符串變量,也不能用於從集合中刪除元素。-= 運算符組合了兩個運算。首先執行減法,而後賦值。所以,如下語句是等效的:
PS C:\> $a-=2 PS C:\> $a=($a-2)
如下語句使用 -= 運算符減小變量的值:
PS C:\> $a=9 PS C:\> $a-=4 PS C:\> $a 5
還可使用 -= 賦值運算符減小數值數組的成員的值。請指定要更改的數組元素的索引。在下面的示例中,數組中第三個元素(元素 2)的值減小 1:
PS C:\> $a=1,3,5 PS C:\> $a[1]-=1 PS C:\> $a 1 2 5
不能使用 -= 運算符刪除變量的值。要刪除賦予變量的全部值,請使用 Clear-Item 或 Clear-Variable cmdlet 將值 $null 或 "" 賦予變量。
PS C:\> $a=8 PS C:\> $a=$null PS C:\> $a
要從數組中刪除特定值,請使用數組表示法將值 $null 賦予該特定項。例如,下面的語句從數組中刪除第二個值(索引位置 1):
PS C:\> $a=1,2,4 PS C:\> $a 1 2 4 PS C:\> $a[1]=$null PS C:\> $a 1 4
要刪除變量,請使用 Remove-Variable cmdlet。在變量已顯式轉換爲特定數據類型,而您須要非類型化變量時,可使用此方法。下面的命令刪除 $a 變量:
PS C:\> $a=5 PS C:\> Remove-Variable a PS C:\> $a
須要注意的是,使用Remove-Variable命令時,使用的命令名稱,變量以前沒有美圓符號($)。