|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2015/11/30 9:17 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]PowerShell 語法參考教學
- PowerShell 語法參考教學
PowerShell Assignment Operator 變數與指定運算子
指定運算子可讓您對變數指定單一數值 (純量) 或多重數值 (陣列)。您也可以將變數 轉換成任何 .NET 資料型別,以及使用單一命令對多個變數指定值。
Windows PowerShell 支援下列指定運算子:
運算子 描述
-------- --------------------------------------------------------
= 將變數的值�]定為指定的值
+= 將變數的值�[上指定的值
或附�[至�{有的值
-= 將變數的值減去指定的值
*= 將變數的值乘以指定的值
或附�[至�{有的值
/= 將變數的值除以指定的值
%= 將變數的值除以指定的值
然後將餘數 (模數) 指定給變數
= 指定運算子 若要指定單一值,請輸入變數的名稱 (以 $ 開頭) 加上 = 指定運算子,再加上要指定 給變數的值。例如,若要將值 6 指定給 $a 變數,請輸入:
若要將字串值指定給變數,請將字串值置於雙引號中。例如:
您也可以使用 = 運算子指定陣列給變數。若要指定陣列的元素,請以逗號分隔 元素值。例如,
$a = "apple", "orange", "lemon", "grape"
指定陣列後,您可以使用索引 (起始位置為 0) 來參照陣列中的元素。請將索引置於方 括號中。例如,若要參照 $a 陣列中的第一個元素,請輸入:
若要參照第三個元素,請輸入:
Windows PowerShell 也允許您將關聯陣列指定給變數。在關聯陣列中,值會與「索引 鍵」相關聯,「索引鍵」就是您所定義的標籤。請在指定陣列給變數時指定索引鍵。 例如,若要將關聯陣列指定給 $a 變數,請輸入:
$a = @{one=1; two=2; three=3}
此範例將值 1、2 和 3 指定給 $a 變數,而且每個值各有其索引鍵。1 的索引鍵為 "one",2 的索引鍵為 "two",3 的索引鍵為 "three"。
使用下列格式即可參照關聯陣列中的值:
<陣列>.<索引鍵>
例如,若要顯示 2,請輸入:
您也可以指定十六進位值給變數。例如,若要將值 0x10 指定給 $a 變數,請輸入:
當您輸入上述命令時,Windows PowerShell 會將十六進位值 (0x10) 轉換成十進位值 (就本例而言即 16),並將轉換後的值視同整數 (Int32) 資料型別而指定給 $a 變數。
您也可以指定指數值給變數。為此,請指定底數、字母 "e" 以及代表 10 的倍數的數 字。例如,若要指定 3.2573 的 1000 次方,請輸入:
位於 "e" 後面的 "3" 指示 Windows PowerShell 應計算底數的 1000 次方。因此,指 定給變數的值為 3257.3。若要計算此數字的 10 次方,請輸入 "3.2573e1"。若要計 算此數字的 100 次方,請輸入 "3.2573e2"。
Windows PowerShell 也能將指定給變數的值從千位元組 (KB)、百萬位元組 (MB) 和十 億位元組 (GB) 轉換成位元組。例如,若要將 10 KB (千位元組) 指定給 $a 變數,請 輸入:
當您執行此命令時,Windows PowerShell 會將值 10,240 指定給變數。
= 指定運算子 += 運算子會累加 (增加) 或附加變數的現有值,取決於變數屬於數字或字串資料 型別,以及變數係設為純量或陣列而定。
+= 運算子結合兩種運算:先執行加法,再進行指定。因此,
相當於:
如果變數是數字純量值,請使用 += 運算子將運算子右邊所指定的數額累加到現有 的值。例如,假設 $a = 8;若要將其值增加 2,請輸入:
變數的值若為字串像是 "happy",則會將 2 附加至字串,因此結果值將是 "happy2"。
變數的值若為陣列 (數字或字串),+= 運算子便會將值為 2 的元素附加至陣列。
例如,假設 $a = 1,2,3,4,則 "$a += 2" 的結果為 $a = 1,2,3,4,2。
-= 指定運算子 -= 運算子會將現有的數值遞減 (減去) 運算子右邊所指定的值。此運算子不能用在字 串變數。
-= 運算子結合兩種運算:先執行減法,再進行指定。因此,
相當於:
例如,若要將 $a 變數的值減去 2,請輸入:
如果儲存在 $a 中的值為 8,執行運算後 $a 所包含的值則為 6。再次執行命令將 使 $a 所包含的值變成 4。
-= 指定運算子也可以用在數字陣列。為此,請指定所要變更之陣列元素的索引。 例如,
使用下列命令即可變更第三個值 (索引位置 2):
此命令會將第三個值減去 1,所以變數如今等於 1, 2, 2。
*= 指定運算子 *= 運算子會將現有的變數值乘以運算子右邊所指定的值。如果變數包含數字純量值, 便將其值乘以指定值。例如,假設 $a 設為 3,則下列命令會將其值設為 12:
*= 運算子結合兩種運算:先執行乘法,再進行指定。因此,
相當於:
然而,如果 $a 是字串值,Windows PowerShell 便會將指定的數字當成字串的數目, 然後將該數目的字串附加至其值。
例如,假設 $a 變數設為 "Apple",則:
會使 $a 的值變成
若要對陣列的元素執行乘法,請使用索引來識別所要變更的元素。例如,下列命令將 陣列中的第一個元素 (索引位置 0) 乘以 2。
/= 指定運算子 /= 運算子會將數字值除以運算子右邊所指定的值。此運算子不能用在字串變數。
/= 運算子結合兩種運算:先執行除法,再進行指定。因此,
相當於:
例如,若要將 $a 的值除以 2,請輸入:
如果 $a 原本等於 8,執行命令後將使該變數變成 4。再次執行命令則會將變數 設為 2。
若要對陣列的元素執行除法,請使用索引來識別所要變更的元素。例如,下列命令將 陣列中的第二個元素 (索引位置 1) 除以 2。
%= 指定運算子 %= 運算子會將現有的變數值除以指定值,然後將餘數 (稱為「模數」) 指定給變數。 此運算子只能用在數字純量變數,而不能用在字串變數或是包含陣列的變數。
%= 運算子結合兩種運算:先執行除法並算出餘數,再將餘數指定給變數。因此,
相當於:
例如,假設 $a 所包含的值為 5,則下列命令會將其值變更為 1。
.NET 資料型別 根據預設,純量變數的資料型別取決於變數指定值的第一個元素。例如,下列命令會 將變數轉換成 int (整數) 型別:
如需確認變數的資料型別,請使用 GetType() 方法。例如,若要檢視目前指定給 $a 的型別,請輸入:
您可以將指定值置於雙引號中,進而將變數轉換成字串型別:
如果最初指定的值是字串,Windows PowerShell 便會將所有的運算都視為字串運算, 並將新值轉換成字串。
例如,
會使變數的新值變成字串值 "63"。
如果最初指定的值是整數,則 Windows PowerShell 會將所有的運算都視為整數運算, 並將新值轉換成整數。
例如,
會使新值變成整數值 9。
您可以將資料型別名稱置於方括號中,然後放在變數名稱或第一個指定值的前面,進而 將新的純量變數轉換成任何 .NET 資料型別。
轉換變數型別有助於判斷變數中所能儲存的資料型別,以及變數受操控時的行為模式。
例如,下列命令會將變數轉換成字串型別:
初始化新變數時,在指定值的前面加上型別名稱也能達到同樣的效果:
將變數轉換成特定型別時,一般慣例通常是轉換變數本身而非轉換其值的型別。然而, 若是對現有的變數指定值,則會因為資料型別名稱的位置不同而有所差異。
例如,假設 $a 包含字串值 "three";若要將其值指定為整數 3,應將資料型別名稱放 在指定值的前面而非變數名稱前面。如果放在變數名稱前面,Windows PowerShell 便會顯示錯誤,指出無法嘗試將字串值 ("three") 轉換成整數。
此外,將資料型別放在變數名稱前面會鎖定變數的型別,除非您藉由指定其他資料型別 以明確置換型別。若您並未明確置換型別,以致嘗試指定的值與現有的型別不相容, Windows PowerShell 便會顯示錯誤。
Windows PowerShell 在處理陣列變數的資料型別方面,做法上有別於處理純量變數的 資料型別。陣列變數若未明確指定資料型別,則其資料型別始終都是 object[],這是 陣列特有的型別。在某些情況下,您可藉由指定其他型別來置換此預設型別。 例如,下列命令將變數轉換成 string[] 陣列型別:
[string[]]$a = "one", "two", "three"
Windows PowerShell 變數可以是任何 .NET 資料型別。此外,您亦可指定目前處理序 所適用的任何完整格式 .NET 資料型別。例如,下列命令指定了 System.Datetime 型別:
[system.datetime]$a = "5/31/2005"
指定給變數的值屬於 datetime 型別。因此,$a 變數的值將會是 "Tuesday, May 31, 2005 12:00:00 AM"。
指定多重變數 在 Windows PowerShell 中,您可以使用單一命令對多個變數指定值。指定值的第一 個元素會指定給第一個變數,第二個元素指定給第二個變數,第三個元素指定給第 三個變數,依此類推。例如,下列命令將 1 指定給 $varA,將 2 指定給 $varB, 並將 3 指定給 $varC:
$varA, $varB, $varC = 1, 2, 3
如果指定值包含的元素數目比變數的個數還要多,多出的值則全部指定給最後一個變 數。例如,下列命令包含三個變數,卻指定了五個值:
$varA, $varB, $varC = 1, 2, 3, 4, 5
在此情況下,Windows PowerShell 會將 1 指定給 $varA,將 2 指定給 $varB,並將 3、4 和 5 指定給 $varC。
若要將 $varC 中的值再指定給其他三個變數,請使用下列格式:
$varD, $varE, $varF = $varC
指定給 $varD 的值為 3,指定給 $varE 的值為 4,指定給 $varF 的值則為 5。
您也可以鏈結變數而將單一值指定給多個變數。例如,下列命令將值 "three" 同時指 定給四個變數:
$varA = $varB = $varC = $varD = "three"
這四個變數如今都指定了相同的值。
與變數相關的 CMDLET 除了透過指定運算來設定變數值之外,您還可以使用 Set-Variable cmdlet。例如, 若要將 1, 2, 3 陣列指定給 $varA 變數,請使用下列命令:
Set-Variable -name varA -value 1, 2, 3
Windows PowerShell 也隨附了與變數相關的其他 cmdlet,包括 Clear-Variable 和 Remove-Variable。Clear-Variable cmdlet 用於清除指定之變數的現有值。對於 字串變數,Clear-Variable cmdlet 會將變數設定成值為 null 的運算式。對於 數字變數,此 cmdlet 則會將變數設為 0。
Remove-Variable cmdlet 用於刪除指定的變數。這可幫您省去重新輸入變數的繁複工 作。也就是說,您可以使用此 cmdlet 移除變數再重新初始化該變數。
原文出處:PowerShell 語法說明/範例教學
|
|
討論串
|