【发布时间】:2018-07-16 17:04:56
【问题描述】:
考虑以下玩具示例脚本test.ps1:
Param(
[Parameter(ParameterSetName='readfile',Position=0,Mandatory=$True)]
[string] $FileName,
[Parameter(ParameterSetName='arg_pass',Mandatory=$True)]
[switch] $Ping
)
if ($Ping.isPresent) {
&$env:ComSpec /c ping $args
} else {
Get-Content $FileName
}
想要的效果是这样的
.\test.ps1 FILE.TXT
显示FILE.TXT的内容和
.\test.ps1 -Ping -n 5 127.0.0.1
ping localhost 5 次。
不幸的是,后者因错误而失败
找不到与参数名称“n”匹配的参数。 在行:1 字符:18 + .\test.ps1 -Ping -n 5 127.0.0.1 + ~~ + CategoryInfo : InvalidArgument: (:) [test.ps1], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,test.ps1当然,这只是一个小例子。
一般来说,我正在寻找一种将[switch] 参数引入我的脚本的方法,该参数位于它自己的参数集中,并且当该开关存在时,我想从命令行使用所有剩余的参数并将它们传递给到另一个命令行应用程序。在 PowerShell 中执行此操作的方法是什么?
【问题讨论】:
标签: powershell parameters arguments parameter-passing optional-parameters