小编due*_*uez的帖子

两个强制参数之一

我正在尝试使用参数创建一个可靠的 PowerShell 函数。现在的问题是我没有让 ParameterSetNames 工作。

我想得到的是

  1. 计算机名或 ipaddress 始终是必需的
  2. 必须设置计算机名或 IP 地址,但不能同时设置(如果可能)
  3. 如果给出了 adminuser 或 adminpassword,另一个是强制性的

我尝试了很多不同的设置,但一直失败这是我最后一次尝试

CmdletBinding(DefaultParameterSetName="IpAddress")]  
[CmdletBinding()]
Param
(
     # computername: Name of the host you want to connect to.
     [Parameter(Mandatory=$true,ParameterSetName="ComputerName", Position=0)]
     [Parameter(Mandatory=$false,ParameterSetName="IpAddress")]
     [Parameter(Mandatory=$true,ParameterSetName="ComputerNameCredentials", Position=0)]
     [Parameter(Mandatory=$false,ParameterSetName="IpAddressCredentials")]
     [Parameter(Mandatory=$false,ParameterSetName="IpAddressUser")]
     [Parameter(Mandatory=$true,ParameterSetName="ComputerNameUser", Position=0)]
     [String]$computername,

     # ipAddress: Ip Address of the host you want to connect to.
     [Parameter(Mandatory=$false,ParameterSetName="ComputerName")]
     [Parameter(Mandatory=$true,ParameterSetName="IpAddress", Position=0)]
     [Parameter(Mandatory=$false,ParameterSetName="ComputerNameCredentials")]
     [Parameter(Mandatory=$true,ParameterSetName="IpAddressCredentials", Position=0)]
     [Parameter(Mandatory=$true,ParameterSetName="IpAddressUser", Position=0)]
     [Parameter(Mandatory=$false,ParameterSetName="ComputerNameUser")]
     [switch]
     [String]$ipAddress,

     # credentials: PowerShell credentials use to connect to the host.
     [Parameter(Mandatory=$false,ParameterSetName="ComputerName")]
     [Parameter(Mandatory=$false,ParameterSetName="IpAddress")]
     [Parameter(Mandatory=$true,ParameterSetName="ComputerNameCredentials")]
     [Parameter(Mandatory=$true,ParameterSetName="IpAddressCredentials")]
     [Parameter(Mandatory=$false,ParameterSetName="IpAddressUser")] …
Run Code Online (Sandbox Code Playgroud)

powershell

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

powershell ×1