2014-01-24 135 views
5

我有一個PowerShell的功能,基本上是這樣的:我可以將參數傳遞給PowerShell函數Unix方式嗎?

function DoSomething-ToTask { 
    [cmdletbinding()] 
    param(
      [parameter(Mandatory=$true)] 
      [strehg[]]$TaskNums 
    ) 

    foreach ($TaskNum in $TaskNums) { 
     do something $TaskNum 
    } 
} 

我們的目標是能夠能夠調用命令行此功能與參數的任意數量。例如,我可以把它現在這個樣子:

DoSomething-ToTask 1 2 3 

..和這樣的後來

DoSomething-ToTask 4 

第二個例子的作品,但第一個沒有。因爲我已經知道我需要傳遞多個參數是這樣的:

DoSomething-ToTask (1, 2, 3) 

這是不是在世界上最糟糕的事情,但還是有種相比第一例的痛。

有沒有什麼方法可以編寫一個PS函數,並與「1 2 3」參數示例一起使用?

回答

10

是的,您可以使用ValueFromRemainingArguments參數屬性。

function DoSomething-ToTask { 
    [cmdletbinding()] 
    param(
      [Parameter(Mandatory=$true, ValueFromRemainingArguments = $true)] 
      [int[]]$TaskNums 
    ) 

    foreach ($TaskNum in $TaskNums) { 
     do something $TaskNum 
    } 
} 

這裏是一個工作示例:

function Do-Something { 
    [CmdletBinding()] 
    param (
     [Parameter(ValueFromRemainingArguments = $true)] 
     [int[]] $TaskNumber 
    ) 

    foreach ($Item in $TaskNumber) { 
     Write-Verbose -Message ('Processing item: {0}' -f $Item); 
    } 
} 

Do-Something 1 2 3 -Verbose; 

結果:

enter image description here

+1

這奏效了。謝謝Trevor! –

相關問題