powershell ParameterSet解析

Posted 万寿山真人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

 

 

 

 

以上是关于powershell ParameterSet解析的主要内容,如果未能解决你的问题,请参考以下文章

使用 powershell 将嵌套的复杂 XML 解析为 CSV

Powershell 是不是忘记在解析器错误上设置 ERRORLEVEL?

PowerShell - HTML 解析:从网站获取信息

Powershell 调用阿里云 云解析API 实现动态域名解析

让shell解析或做你自己的解析(powershell / cmd)

无法在 PowerShell 中完全解析 XML