PowerShell实现参数互斥示例_PowerShell

在PowerShell的函数中如果想让参数互斥,可以使用 “ParameterSetName”属性将一个parameter属性定义在不同的参数或着参数集合中。

 很多人可能没有留意,在PowerShell的函数中,我们可以将多个参数属性定义在同一个参数名上,这样配合mandatory可以让一个参数在某个场景下是强制的,在另外的场景下则是可选的。

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 '远程调用'
}
}

上面的函数Test-ParameterSet 将演示在参数”NonCredential”激活时, -ComputerName为可选参数。而当你使用了 -Credential 参数时, -ComputerName 就变成了强制参数。而当你使用了 -LocalAction 参数以后,-ComputerName和-Credential均可有可无。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数
, powershell
互斥
linux 互斥锁 示例、powershell 参数、powershell 输入参数、powershell 函数 参数、powershell 传参数,以便于您获取更多的相关知识。

时间: 2024-09-19 18:55:37

PowerShell实现参数互斥示例_PowerShell的相关文章

PowerShell实现参数互斥示例

  在PowerShell的函数中如果想让参数互斥,可以使用 "ParameterSetName"属性将一个parameter属性定义在不同的参数或着参数集合中. 很多人可能没有留意,在PowerShell的函数中,我们可以将多个参数属性定义在同一个参数名上,这样配合mandatory可以让一个参数在某个场景下是强制的,在另外的场景下则是可选的. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

PowerShell ISE自动化简单示例_PowerShell

PowerShell ISE的自动化不依赖与任何第三方的框架和工具,因为PowerShell ISE本身就是可编程的.非常高大上地被称作为PowerShell抽象语法树,其实在之前的一篇文章中有简单分享过.关键点在于$PSISE变量. 今天再来看两行更加单的例子: 我想输出PowerShell ISE 中当前编辑框中的所有脚本: 复制代码 代码如下: $psise.CurrentFile.Editor.Text 我想将PowerShell ISE中当前编辑框中的所有脚本中的某个字符串,替换成我期

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

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

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

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

PowerShell中的函数重载示例_PowerShell

在PowerShell中,我们可以使用Function关键字来定义一个函数,比如: Function Get-Data { Param ( [int] $data = -1 ) return $data; } 这个名为Get-Data的函数接收一个int类型的参数$data,直接将其返回.那么,我同时还需要一个接收string类型的Get-Data函数怎么办?方法比较奇怪,至少和传统的C++之类的语言不同. 在PowerShell中定义重载函数,需要指定参数所属的Parameter Set,如下

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

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

PowerShell Continue语句使用示例

  这篇文章主要介绍了PowerShell Continue语句使用示例,本文直接给出示例代码,需要的朋友可以参考下 当你在一个循环的内部使用 "Continue"语句时,可以跳过循环的当前迭代,继续执行下一个迭代.如果使用了"Break"语句,则会跳过剩余的所有迭代循环. 这样就引发了一个问题,在一个多层嵌套循环中,哪一个循环会被影响.默认情况下,"Continue"只会影响到内层循环,但是你也可以用"Continue" 和

nginx中使用rewrite模块的参数及示例

本文中的内容收集整理自互联网,在nginx中使用rewrite模块的一些方法.参数及示例文件,供以后学习,特归纳出来供大家来参考. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 正则表达式匹配,其中: * ~ 为区分 大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在

Powershell互斥参数使用实例_PowerShell

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