2014-05-16 195 views
3
[Parameter (Mandatory=$False)] 
[ValidateSet("Val1", "Val2", "Val3", "Val4", "Val5",ignorecase=$true)] 
[string[]] $configs = "" 

有沒有辦法改變上面這樣我可以一次接受幾個枚舉值?Powershell枚舉參數

我希望能夠啓動腳本這樣:

\ MyAwesome-Script.ps1 -config VAL1 VAL2(或參數枚舉值的任意組合)

但我需要這也是標籤完整,能夠(是,即使一個字?)

爲了完整起見,我使用PS 4.0和3.1 PSCX還安裝

回答

7

只是讓你的變量數組,它會工作正好。鑑於以下功能:

function Test-ValidateSet 
{ 
    PARAM(
     [ValidateSet("Val1", "Val2", "Val3")] 
     [string[]]$MyParam 
    ) 

    foreach($value in $MyParam) 
    { 
     Write-Host "Parameter given: $value" 
    } 
} 

對於上面的方法,我得到了MyParam參數標籤完井。要爲參數輸入數組,只需使用逗號字符分隔值。

Test-ValidateSet -MyParam Val1, Val2, Val3 

這支持在PowerShell控制檯和PowerShell的ISE 標籤完井。

+0

對不起,做了一個小小的編輯。您的回覆與我的回覆幾乎完全相同,但只有第一個參數已完成。或者是它的限制? – SteveMustafa

+0

你沒有包含實際的參數定義,所以我不知道。如果您使用的是PowerShell ISE並希望下拉列表,則必須按下CTRL +空格鍵以獲取其他條目的下拉列表,但按Tab鍵循環選項應該在PowerShell控制檯和PowerShell ISE(至少在我的電腦上都有)。 –

+0

你確實是對的。我很抱歉。嗯,同樣的行爲不會在我的展示。 CTRL + SPACE的確確實實現了一個下拉菜單,但是在選擇了第一個枚舉值後,即使我嘗試填充一個數組,也不會爲該相同的參數使用額外的枚舉值。 – SteveMustafa