对参数的powershell约束

mut*_*gan 4 powershell

关于如何对powershell脚本的参数强制执行以下约束,我需要一些帮助.我可以在该param部分中指定这些约束.

  1. 至少有一个参数约束
  2. 最多一个参数约束

例如,(只是一个例子,它不是我正在做的)对于一个被调用的脚本ReadPlainText.ps1,我只想给出两个参数中的任何一个:Lines或者Chars,但不是两者.该命令ReadPlainText.ps1 Sample.txt -Lines 20 -Chars 10应该导致错误.同样,该命令ReadPlainText.ps1 Sample.txt应该导致错误.

Ric*_*ard 6

您可以在PSH V2中执行此操作,参数属性并将两个参数放入不同的参数集中.

参数集是一组参数,一个命令可以有多个参数集,只有一个可用.所有参数都可以使用未分配给参数组的参数.这可以在标准cmdlet中看到(删除常用参数):

PS> gcm -syn get-content

Get-Content [-Path]  …
Get-Content [-LiteralPath]  …

要在脚本或函数中实现此目的:

  • 添加[CmdletBinding]为第一个非评论.(可以在此处指定默认参数集.)
  • param装饰参数中,用Parameter属性指定强制和参数集.

从而:

[CmdletBinding]
param (
  [parameter(mandatory=$true,ParameterSetName='lines')
  [int]$Lines,
  [parameter(mandatory=$true,ParameterSetName='chars')
  [int]$|Chars
)

访问使用中的参数集,该参数集$PSCmdlet允许访问在C#或VB编写的cmdlet中可用的相同信息.