Powershell互斥参数使用实例

所属分类: 脚本专栏 / PowerShell 阅读数: 1334
收藏 0 赞 0 分享

有时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。

更多精彩内容其他人还在看

PowerShell入门教程之编写和使用脚本模块实例

这篇文章主要介绍了PowerShell入门教程之编写和使用脚本模块实例,本文讲解了模块、脚本模块、编写脚本模块、模块安装路径、模块文件夹等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

WMI入门教程之什么是WMI?

这篇文章主要介绍了WMI入门教程之什么是WMI?WMI有一组API,我们可以使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,需要的朋友可以参考下
收藏 0 赞 0 分享

WMI入门教程之怎么使用WMI?

这篇文章主要介绍了WMI入门教程之怎么使用WMI?本文讲解了在软件中、PowerShell中、.NET中使用WMI的例子,需要的朋友可以参考下
收藏 0 赞 0 分享

WMI入门教程之WMI中的类在哪里?

这篇文章主要介绍了WMI入门教程之WMI中的类在哪里?本文讲解了WMI中类的层次结构、常用WMI类、WMI类查找手册等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell小技巧之观察UNC路径

UNC(Universal Naming Convention)通用命名规则,也称通用命名规范、通用命名约定。UNC路径就是类似\\softer这样的形式的网络路径。
收藏 0 赞 0 分享

PowerShell小技巧之True和False的类型转换

这篇文章主要介绍了在PowerShell中将True和False的类型互相转换的几种方法,非常简单实用,有需要的朋友参考下
收藏 0 赞 0 分享

PowerShell小技巧之查找获取注册表路径

这篇文章主要介绍了在PowerShell中使用递归查找获取注册表路径的小技巧,有需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell小技巧之获取字符串的行数

这篇文章主要介绍了Powershell获取字符串的行数的小技巧,只要懂得了它的工作原理就能在多种场合使用。需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell小技巧之查询AD用户

这篇文章主要介绍了Powershell小技巧之查询AD用户,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell小技巧之查看安装的.Net framework版本信息

本文主要介绍了使用powershell查看安装的.net framework的版本信息,非常简单使用,有需要的朋友参考下
收藏 0 赞 0 分享
查看更多