繁体   English   中英

在PowerShell函数中,如何仅当缺少另一个可选参数时才使参数成为必需参数?

[英]In a PowerShell function, how can I make a parameter mandatory only if another optional parameter is absent?

我正在编写PowerShell函数,我需要第一个参数为可选,然后第三个参数为可选,但前提是第一个参数存在。

这是现在的代码:

Param(
    [Parameter(position=0)][array]$From,
    [Parameter(position=1,Mandatory=$true)][string[]]$Names,
    [Parameter(position=2)][string[]]$Values
)

理想情况下,我会这样做:

    [Parameter(position=2,Mandatory=(!$From))][string[]]$Values

但这是不允许的。
我一直在以某种方式使用集合名称的印象,但是我不确定该如何处理。 我唯一需要更改的是$ Values的强制属性值,具体取决于$ From的存在。

我这样做的最佳方法是什么?


我已经仔细研究了以下每个过去的问题,但根据发现的问题我尝试过的任何方法都行不通。

创建带有可选调用变量的函数:Powershell
存在另一个参数时在PowerShell中要求参数
PowerShell强制参数取决于其他参数
具有一个可选参数,需要提供另一个参数
多个强制性参数集
条件Powershell参数

尝试这样的事情:

[Parameter(position=0,ParameterSetName = "From")]
[array]$From,
[Parameter(position=1,Mandatory=$true,ParameterSetName = "Names")]
[string[]]$Names,
[Parameter(position=2,Mandatory=$true,ParameterSetName = "Names")]
[Parameter(position=2,Mandatory=$false,ParameterSetName = "From")]
[string]$Values

您定义两个集合, NamesFrom

  • Names包含$ Names和必需的$ Values
  • From具有$ From和可选的$ Values

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM