• 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 }

     

  • 相关阅读:
    搭建Go调试环境(LiteIDE)
    golang编译工具LiteIDE的调试使用方法(F5)
    Golang并发模型:轻松入门流水线FAN模式
    Golang并发中channel的分析
    需求设计说明书的重要性
    Chrome开发者工具详解-Elements、Console、Sources面板
    Chrome开发者工具详解(5)-Application、Security、Audits面板
    bzoj1216: [HNOI2003]操作系统
    bzoj1150: [CTSC2007]数据备份Backup
    bzoj1059: [ZJOI2007]矩阵游戏
  • 原文地址:https://www.cnblogs.com/lixiaonuohao/p/6956025.html
Copyright © 2020-2023  润新知