Tom*_*url 5 powershell scripting
我有一个PowerShell函数,基本上看起来像这样:
function DoSomething-ToTask {
[cmdletbinding()]
param(
[parameter(Mandatory=$true)]
[strehg[]]$TaskNums
)
foreach ($TaskNum in $TaskNums) {
do something $TaskNum
}
}
Run Code Online (Sandbox Code Playgroud)
目标是能够使用任意数量的参数从命令行调用此函数.例如,我现在可以这样称呼它:
DoSomething-ToTask 1 2 3
Run Code Online (Sandbox Code Playgroud)
..稍后会这样
DoSomething-ToTask 4
Run Code Online (Sandbox Code Playgroud)
第二个例子有效,但第一个没有.我已经知道我需要传递多个这样的参数:
DoSomething-ToTask (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
与第一个例子相比,这不是世界上最糟糕的事情,但仍然是一种痛苦.
有没有办法编写一个与"1 2 3"参数示例一起使用的PS函数?
Tre*_*van 10
是的,您可以使用ValueFromRemainingArguments参数属性.
function DoSomething-ToTask {
[cmdletbinding()]
param(
[Parameter(Mandatory=$true, ValueFromRemainingArguments = $true)]
[int[]]$TaskNums
)
foreach ($TaskNum in $TaskNums) {
do something $TaskNum
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个工作示例:
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;
Run Code Online (Sandbox Code Playgroud)
结果:

| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |