powershell ParameterSet解析

  自定义PowerShell函数,在设置参数的时候中,可以将参数设置为某些情况下可选,某些条件下又设置为必选。

  示例代码从网站复制的。

 1 function Connect-Somewhere
 2 {
 3     [CmdletBinding(DefaultParameterSetName='A')]
 4     param
 5     (
 6         [Parameter(ParameterSetName='A',Mandatory=$false)]
 7         [Parameter(ParameterSetName='B',Mandatory=$true)]
 8         $ComputerName,
 9         [Parameter(ParameterSetName='B',Mandatory=$false)]
10         $Credential
11     )
12     $chosen = $PSCmdlet.ParameterSetName
13     “You have chosen $chosen parameter set.”
14 }

  示例函数定义了两个参数集:A,B。

  参数集A只有一个参数$ComputerName,且它是可选的。

  参数集B有两个参数$ComputerName和$Credential。

  如使用默认参数集A,函数不需要输入ComputerName参数,因为它不是必选的。

  如使用参数$Credential,参数集被赋值为B,这时参数$ComputerName属性Mandatory=$true,这时强制使用$ComputerName了。

下面一个例子更详细演示:

 1 function Test-ParameterSet
 2 {
 3     [CmdletBinding(DefaultParameterSetName = 'NonCredential')]
 4     param
 5     (
 6         $id,
 7 
 8         [Parameter(ParameterSetName = 'LocalOnly', Mandatory = $false)]
 9         $LocalAction,
10 
11         [Parameter(ParameterSetName = 'Credential', Mandatory = $true)]
12         [Parameter(ParameterSetName = 'NonCredential', Mandatory = $false)]
13         $ComputerName,
14 
15         [Parameter(ParameterSetName = 'Credential', Mandatory = $false)]
16         $Credential
17     )
18 
19     $PSCmdlet.ParameterSetName
20     $PSBoundParameters
21 
22     if ($PSBoundParameters.ContainsKey('ComputerName'))
23     {
24         Write-Warning '远程调用'
25     }
26 }

 

原文地址:https://www.cnblogs.com/lixiaonuohao/p/6956025.html