摘要:[PowerShell] 變數 (Variable)
在介紹PowerShell用法之前,先來說明一下「Windows PowerShell 整合指令碼環境 (ISE)」
Window PowerShell ISE
- 主控應用程式,可以直接在這個環境中撰寫、執行和測試、偵錯指令碼等。
ISE因為OS環境的不同,有些是選擇性需自行安裝的。
以Window 7為例,預設是有安裝ISE的哦。
(1) 程式集 → 搜尋「PowerShell」→ 選擇「PowerShell ISE」
             
(2) 接下來,點下去開啟ISE,來試試如何玩玩PowerShell唄~
如下圖示,分為「指令碼編輯窗格、輸出窗格、命令窗格」。
                    
變數 (Varible)
- 變數:「$」開頭
如同一般程式寫法,只是變數為$開頭,先來簡單試試以下程式唄。
$a = 6        #將數字6指定給變數$a
$b = 27.5     #將數字27.5指定給變數$b
$c = "27.5"   #將字串27.5指定給變數$c
Step1:於ISE的「指令碼編輯窗格」填上上方的程式碼,並按下綠色的執行按鈕。
(此時,程式已執行了這三行程式碼,可以再試試Step2)
Step2:在最下方的「命令窗格」,輸入「$a」並按下Enter,中間的「輸出窗格」,變會出現$a的結果為6。
                    
Step3:可以利用「$變數.GetType()」,來取得變數的型態。
(在「命令窗格」執行以下程式碼,或如下圖直接貼在「指令碼編輯窗格」中,再點選執行按鈕。
$a.GetType()
$b.GetType()
$c.GetType()
Step4:測試後發現,右邊指定的值可以決定左方變數的型態。
                             
Step5:接下來,我們再來試試看陣列的用法吧,若想指定陣列,直接以逗號分隔不同的陣列元素。
$ary = "totoro", "say", "powershell", "is", "good" 
Step6:指定陣列後,就可以利用索引值(起始值為0),取得陣列中的元素囉~
舉例說明,若想取得第一個元素的"totoro":
$ary[0]
若想取得第三個元素的"powershell":
$ary[2]
$ary[2..4]
$ary[2,4]
$ary[-2]
$array = @() #陣列初始化
$array += "ary1"
$array += "ary2"
$array += "ary3"
$hash = @{}
$hash.title = "powershell"
$hash.date =  Get-Date
$hash.id = 1234567
$hash = @{title = "powershell"; date =  Get-Date; id = 1234567}
最後,來總結一下,powershell的變數,會依右方的指定值型態,自動處理型別的轉換。
另外提供以下例子,若是兩種不同型別的處理 (可於「指令碼編輯窗格」中,再點選執行按鈕)
$a="1"
$b=2
直接於「輸出窗格」試試以下結果:
$a + $b
字串$a加整數$b,powershell會將$b的數字2轉換為字串,結果為12
$b + $a
結果為3。
- 指定型別
承上,我們其實也可以自行指定轉換的型別,例如:
[int]$a + $b
$a強制由字串1,轉型為整數1,故結果為3
[string]$b + $a
同樣的,$b強制由整數2,轉型為字串2,結果為21。
                  
 最後的最後,提供以下幾種powershell的資料型態哦~                          
| 資料型態 | 描述 | 
| [string] | Unicode字元字串(System.String) | 
| [char] | Unicode 16-bit字元(System.Char) | 
| [byte] | 8-bit unsigned字元(System.Byte) | 
| [int] | 32-bit signed整數(System.Int32) | 
| [long] | 64-bit signed整數(System.Int64) | 
| [bool] | True, False布林值(System.Boolean) | 
| [decimal] | 128-bit十進位數值(System.Decimal) | 
| [single] | 32-bit單精度浮點數(System.Single, float) | 
| [double] | 64-bit雙精度浮點數(System.Double) | 
| [datetime] | 日期時間(System.DateTime) | 
| [xml] | XML物件 | 
| [array] | 陣列值 | 
| [hashtable] | HashTable物件 |