PowerShell 中引數的多個值
-
瞭解 PowerShell 中的
Parameter
函式 -
在 PowerShell 中使用
Named
引數 - 在 PowerShell 中對引數使用預設值
-
在 PowerShell 中使用
Switch
引數 -
在 PowerShell 中使用
Mandatory
引數 - 在 PowerShell 中使用未知數量的引數
- 在 PowerShell 中使用管道引數
我們使用 PowerShell 引數函式 param
處理引數。它是任何指令碼的基本元件,使開發人員能夠在執行時提供輸入。
此外,如果指令碼的行為需要更改,引數可以提供這樣做的機會,而無需更改底層程式碼。
本文將討論 parameter
函式、我們可以定義的不同變數、在單個引數中處理多個值以及示例使用。
瞭解 PowerShell 中的 Parameter
函式
管理員可以使用引數函式 param()
為指令碼建立引數。
在內部,引數函式包含一個或多個由變數定義的引數。
param ($myVariable)
但是,為確保引數只接受你需要的輸入型別,最好通過在變數前用方括號 []
將資料型別括起來來為引數分配資料型別。
param ([String]$myVariable)
值得注意的是,你還可以使用其他資料型別,如整數
、浮點數
和日期時間
。我們還可以為它分配一個資料型別 Boolean
,我們將進一步討論。
在 PowerShell 中使用 Named
引數
在指令碼中使用引數函式是通過命名
引數。
當通過 named
引數將值傳遞給指令碼或函式時,我們可以使用變數的名稱作為引數的全名。
sample.ps1
:
param ([String]$name)
Write-Output $name
然後我們可以在執行 .ps1
檔案時使用命名引數。
powershell.exe .\sample.ps1 -name "John"
在 PowerShell 中對引數使用預設值
我們可以通過在指令碼內給引數一個值來為引數預先分配一個預設值。
此外,在不從命令列傳遞值的情況下執行指令碼將採用指令碼中定義的預設變數。
param ([String]$name = "John")
在 PowerShell 中使用 Switch
引數
我們可以為我們的指令碼使用另一種引數型別:[switch]
資料型別定義的 switch
引數。
該引數主要用於我們之前討論過的二進位制或布林值,表示 true
或 false
的值。
param ([switch]$isEnabled)
在 PowerShell 中使用 Mandatory
引數
在我們的一些用例中,執行指令碼時必須使用一個或多個引數是很常見的。
我們可以通過在引數塊 [Parameter()]
中新增 Mandatory
屬性來定義強制引數。
param (
[Parameter(Mandatory)]
[String] $servername
)
除非在命令列中提供了值,否則指令碼環境將不允許指令碼執行。
在 PowerShell 中使用未知數量的引數
通常,我發現使用命名引數遠遠優於僅從命令列讀取引數。當你需要處理未知數量的引數時,讀取引數會更容易。
讓我們以驅動器號為例。也許我們需要一個指令碼來檢查機器中的一個或多個驅動器。
然後,我們可以使用命名引數並將其宣告為 String
資料型別。
checkdrives.ps1
:
param([String]$myDrive)
foreach($drive in $myDrive){
Write-Output "Processing drive $drive"
}
但是,將多個驅動器號傳遞到引數中,PowerShell 會將其視為一個物件。
powershell .\checkdrives.ps1 -myDrive C,D,E
輸出:
Processing drive C D E
PowerShell 會將逗號替換為空格並將它們視為一個變數。不幸的是,這不起作用,因為我們需要在我們的用例中單獨處理驅動器。
為了讓我們的直譯器在一個引數下捕獲多個引數,我們需要將資料型別更改為帶有方括號 []
的陣列。然後,在執行時,PowerShell 將處理單獨列出的引數。
checkdrives.ps1
:
param([String[]]$myDrive)
foreach($drive in $myDrive){
Write-Output "Processing drive $drive"
}
示例程式碼:
powershell .\checkdrives.ps1 -myDrive C,D,E
請記住用逗號分隔引數。
輸出:
Processing drive C
Processing drive D
Processing drive E
在 PowerShell 中使用管道引數
大多數 PowerShell cmdlet 允許你使用管道 |
傳遞資料的符號。當涉及到引數時,我們可以利用這一點。
例如,我們可以獲取儲存在管道中的最後一個值,並使用引數塊的 ValueFromPipeline
屬性將其傳遞給另一個 PowerShell 檔案。
pipeline.ps1
:
param([parameter(ValueFromPipeline)]$pipedVar)
Write-Output $pipedVar
示例程式碼:
"This string is from the pipeline." | .\pipeline.ps1
輸出:
This string is from the pipeline.
執行此技術為執行連結的 PowerShell 檔案提供了許多機會。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn