jum*_*mbo 11 parameters powershell function conditional-statements
有没有办法在powershell函数中根据某些条件(例如:如果其中一个参数不存在或为false)强制使用某些参数?
我的想法是能够以两种方式调用函数.具体示例是从sharepoint获取列表的函数 - 我应该能够使用列表相对URL(一个且唯一的参数)或者使用web url和列表显示名称(两个参数,两者都是必需的,但仅当列表相对URL是不曾用过).
我希望我的问题很明确.
And*_*ndi 12
正如Christian所说,这可以通过ParameterSetNames来完成.看看这个例子:
function Get-MySPWeb {
[CmdletBinding(DefaultParameterSetName="set1")]
param (
[parameter(ParameterSetName="set1")] $RelativeUrl,
[parameter(ParameterSetName="set2")] $WebUrl,
[parameter(ParameterSetName="set2", Mandatory=$true)] $DisplayName
)
Write-Host ("Parameter set in action: " + $PSCmdlet.ParameterSetName)
Write-Host ("RelativeUrl: " + $RelativeUrl)
Write-Host ("WebUrl: " + $WebUrl)
Write-Host ("DisplayName: " + $DisplayName)
}
Run Code Online (Sandbox Code Playgroud)
如果你运行它将-RelativeUrl Foo绑定到"set1".如果在没有参数的情况下调用此函数,它也将绑定到"set1".
(注意 - 当PowerShell v3中没有提供参数时(使用Win8使用者预览版),它将绑定到"set1",但是它会在PowerShell v2中绑定错误,除非你添加[CmdletBinding(DefaultParameterSetName="set1")]到param块.感谢@ x0n为DefaultParameterSetName提示!)
如果您尝试使用两个集中的参数值运行它,您将收到错误.
如果你用-WebUrl Bar它运行它将提示你输入DisplayName的参数值,因为它是一个必需参数.
| 归档时间: |
|
| 查看次数: |
11165 次 |
| 最近记录: |