我有一個接受兩個參數的簡單代碼。這些參數是可選的。以下是代碼。確定運行腳本時傳遞哪個參數
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$pA,
[Parameter(Mandatory=$False)]
[string]$pB
)
當運行腳本我想知道哪個參數傳遞。 pA
或pB
。
我有一個接受兩個參數的簡單代碼。這些參數是可選的。以下是代碼。確定運行腳本時傳遞哪個參數
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$pA,
[Parameter(Mandatory=$False)]
[string]$pB
)
當運行腳本我想知道哪個參數傳遞。 pA
或pB
。
$MyInvocation.BoundParameters
返回ps自定義字典對(鍵/值)與所有傳遞的參數。
這是a.ps1文件的內容:運行此腳本
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$pA,
[Parameter(Mandatory=$False)]
[string]$pB
)
$MyInvocation.BoundParameters
給出:
PS C:\ps> a -pA pAparam
Key Value
--- -----
pA pAparam
,那麼你可以查閱一下鍵存在:
[bool]($MyInvocation.BoundParameters.Keys -match 'pa') # or -match 'pb' belong your needs
由於你可以測試你的$ Pa和$ Pb是否爲空:
您可以使用此功能測試:
function func
{
[CmdletBinding()]
Param([Parameter(Mandatory=$False)]
[string]$pA,
[Parameter(Mandatory=$False)]
[string]$pB
)
if ($pA -eq [string]::Empty -and $pA -eq [string]::Empty)
{
Write-Host "Both are empty"
}
elseif ($pA -ne [string]::Empty)
{
Write-Host "Pa is not empty"
}
elseif ($pB -ne [string]::Empty)
{
Write-Host "Pb is not empty"
}
}
Clear-Host
func
仍然是func -Pa
「」將給予相同的結果func
問題,但如果你只是想測試參數的存在,你可以使用switch
屬性。
你可以找到更多關於PowerShell腳本和函數的參數與這些鏈接: