Powershell 如何支持带有通配符的枚举参数
我想在PowerShell函数中声明一个参数,用于执行以下操作:Powershell 如何支持带有通配符的枚举参数,powershell,Powershell,我想在PowerShell函数中声明一个参数,用于执行以下操作: 将可能的值限制在有限的范围内 允许多个值(但不允许重复),如标志 可能值的“支持”选项卡完成 允许使用通配符 对于前3个需求,我可以使用一个简单的[ValidateSet('this'、'that'、'other')]参数来实现: My-Command -MyParameter this, that 例如,假设我有以下功能: function Resolve-ProtocolToDefaultPort { [Cmdlet
[ValidateSet('this'、'that'、'other')]
参数来实现:
My-Command -MyParameter this, that
例如,假设我有以下功能:
function Resolve-ProtocolToDefaultPort {
[Cmdletbinding()]
param (
[Parameter(ParameterSetName='ByProtocol', Mandatory)]
[ValidateSet('FTP', 'FTPS', 'SFTP', 'HTTP', 'HTTPS')]
[string[]] $Protocol
)
foreach ($curProtocol in $Protocol) {
switch($curProtocol) {
{ 'HTTP' -like $_ } { return 80 }
{ 'HTTPS' -like $_ } { return 443 }
# ...
}
}
}
我如何支持此用例:
PS > Resolve-ProtocolToDefaultPort -Protocol HTT*
80
443
在保留制表符完成和参数验证的同时?请查看通配符参数。@Manu我不知道这个属性。不幸的是,它没有达到预期的效果<代码>Resolve ProtocolToDefaultPort:无法验证参数“Protocol”上的参数。参数“HTT*”不属于ValidateSet属性指定的集合“FTP、SFTP、FTPS、HTTP、HTTPS”。请提供集合中的参数,然后重试该命令。请查看通配符参数。@Manu我不知道该属性。不幸的是,它没有达到预期的效果<代码>Resolve ProtocolToDefaultPort:无法验证参数“Protocol”上的参数。参数“HTT*”不属于ValidateSet属性指定的集合“FTP、SFTP、FTPS、HTTP、HTTPS”。请提供集合中的参数,然后重试该命令。