Powershell互斥参数使用实例

有时Powershell的函数需要互斥,让用户只能在其中二选一。
要给脚本创建一组互斥的参数,可以给他们打上不同的属性标志,同时确保它们的唯一性(假设不能自动识别参数类型).

function Test-ParameterSet
{
 [CmdletBinding(DefaultParameterSetName='number')]
 param
 (
  [int]
  [Parameter(ParameterSetName='number', Position=0)]
  $id,

  [string]
  [Parameter(ParameterSetName='text', Position=0)]
  $name
 )

 $PSCmdlet.ParameterSetName
 $PSBoundParameters
}

上面函数有两个参数,-id和-name.用户只能使用其中一个,同时不能两个都用。同时这里例子也教了大家怎么去获取用户输入的参数。

多个互斥参数可以通过“ParameterSetName”来区分不同的参数设置(也包括集合参数)
事实上你也可以分配多个参数跟一个参数,即一个固定参数和一个可选参数。

function Test-ParameterSet
{
 [CmdletBinding(DefaultParameterSetName='NonCredential')]
 param
 (
  $id,

  [Parameter(ParameterSetName='LocalOnly', Mandatory=$false)]
  $LocalAction,

  [Parameter(ParameterSetName='Credential', Mandatory=$true)]
  [Parameter(ParameterSetName='NonCredential', Mandatory=$false)]
  $ComputerName,

  [Parameter(ParameterSetName='Credential', Mandatory=$false)]
  $Credential
 )

 $PSCmdlet.ParameterSetName
 $PSBoundParameters

 if ($PSBoundParameters.ContainsKey('ComputerName'))
 {
  Write-Warning 'Remote Call!'
 }
}

Test-ParameterSet 函数告诉你:当使用“NonCredential”时,-ComputerName是可选;当用户使用“-Credential”参数时“-ComputerName”又变成必选参数,如果使用了“-LocalAction”参数,将不能使用-ComputerName和-Credential。

(0)

相关推荐

  • Powershell互斥参数使用实例

    有时Powershell的函数需要互斥,让用户只能在其中二选一. 要给脚本创建一组互斥的参数,可以给他们打上不同的属性标志,同时确保它们的唯一性(假设不能自动识别参数类型). function Test-ParameterSet { [CmdletBinding(DefaultParameterSetName='number')] param ( [int] [Parameter(ParameterSetName='number', Position=0)] $id, [string] [Par

  • PowerShell默认参数$PSDefaultParameterValues结合Out-File输出到日志文件

    输出log是一个永恒的话题,什么tracelistener,net4log,nlog,windows中自带的eventlog,之前在自动重定向PowerShell控制台输出到文件 也算.其实借助于PowerShell 3.0以后的PowerShell默认参数$PSDefaultParameterValues,可以让Out-File,命令也变成也简易的Log神器. 复制代码 代码如下: $PSDefaultParameterValues['Out-File:FilePath'] = 'mylog.

  • 基于vue.js路由参数的实例讲解——简单易懂

    vue中,我们构建单页面应用时候,一定必不可少用到vue-router vue-router 就是我们的路由,这个由vue官方提供的插件 首先在我们项目中安装vue-router路由依赖 第一种,我们提供命令行来安装 npm install vue-router --save 第二种,我们直接去官方github下载 https://github.com/vuejs/vue-router 路由参数设置 1,实例化一个路由,然后路由映射表中的地址带参数,这个参数就是路由的参数 接着给映射表中的路由设

  • Bootstrap 模态框(Modal)带参数传值实例

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 为了实现父窗体与其的交互,通常需要向其传值,实现带参数的传递,查看数据的唯一性.例如下面窗体:点击任意一个模态框("回复"按钮),如果不做任何处理,则会出现回复混淆,甚至程序出错的情况. 为了实现其回复的唯一性和带参传值的功能,需要做以下处理 实现的效果: 总结 以上所述是小编给大家介绍的Bootstrap 模态框(Modal)带参数传

  • PowerShell函数参数设置成自动识别数据类型的例子

    本文介绍PowerShell自定义函数中使用参数集时,怎么设置系统自动识别参数的数据类型. 识别参数类型的一个好处就是,在使用参数集时,不需要每次都指定参数名称了. 请看下面这个Test-Binding函数.这个PowerShell函数在设置参数集的时候,为参数集中的第一个参数设置了数据类型,这样在调用函数时,就可以自动判断一个参数值它应该赋给哪个参数了. 复制代码 代码如下: function Test-Binding {     [CmdletBinding(DefaultParameter

  • PowerShell函数参数设置为即可选又必选的方法

    本文介绍PowerShell自定义函数中使用参数集时,可以将同一个参数既设置为可选,又设置为必选. 好吧,小编承认,这个话题有点无聊,但确实还是有点有趣,不妨看一看啦. 在PowerShell中,我们有可能有这样的需求,如果只需要输入某个参数时,这个参数是可选的.但如果还要输入别的参数,那这个参数就变成必选的了.那么这种需求如何来满足呢?那就是本文的意义所在了. 复制代码 代码如下: function Connect-Somewhere {     [CmdletBinding(DefaultP

  • ASP.NET jquery ajax传递参数的实例

    第一种:GET传递 前台 ajax   GET 传递 :即在请求的地址后面加上参数,URL地址长度有显示,安全性低 后台接收:Request.QueryString["参数名字"]! 例如: function LoadBar(id) { var project = id; var month = $("#txtMonth").val(); $.ajax({ type: "GET", async: false, url: 'GetProjectSc

  • MyBatis传入参数的实例代码

    在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和JAVA复杂数据类型 基本数据类型:包含int,String,Date等.基本数据类型作为传参,只能传入一个.通过#{参数名} 即可获取传入的值 复杂数据类型:包含JAVA实体类.Map.通过#{属性名}或#{map的KeyName}即可获取传入的值 基本数据类型参数示例: 根据班级ID查询教师列表 x

  • SpringMVC通过注解获得参数的实例

    SpringMVC可以通过RequestParam注解来映射获得参数,具体用法如下: 例子: 配置过程省略 1.新建controller类 package com.loger.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class RequestParam

  • Java中前台往后台传递多个id参数的实例

    1.传字符串的形式,字符串中每个id用 "," 隔开 打印出来如下形式: 前台JS代码 function saveRoleAdd() { var roleNames = $('#roleNames').textbox("getText"); var roleDetail = {}; roleDetail.roleNames = roleNames; roleDetail.roleFunctionCount = 0; roleDetail.roleFunctionLi

随机推荐