[PowerShell] 變數 (Variable)

  • 6042
  • 0
  • 2018-01-05

摘要:[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"

 

                   可以試著在「輸出窗格」中,輸入「$array」看看結果,或試試「$array.GetType()」查看型態。
                   若想了解其它更進階的陣列用法可以再自行好好深入研究囉!
 
 
        Step6:接下來,我們再來試試看HashTable的用法吧。
                    HashTable就像是C#的Dictionary,是一個可以根據Key,來索引到對應的Value。
                    直接試試以下,就能感受到什麼是HashTable唄~(like json)
$hash = @{}
$hash.title = "powershell"
$hash.date =  Get-Date
$hash.id = 1234567

 

                   一樣可以試著在「輸出窗格」中,輸入「$hash」看看結果,或試試「$hash.GetType()」查看型態。
 
                  
 
 
        Step7:若想取值,例如:
                   執行「$hash.date」,可以取出當時的時間
                   執行「$hash.title」,可以取出字串powershell...
                   承上,也可以直接宣告時給予Value:
$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物件