PowerShell中的ValidatePattern - 智能管道

时间:2012-09-07 17:29:45

标签: c# powershell

想象一下这个CmdLet:

Request-RemoteAssistance [-IPAddress <string>]
Request-RemoteAssistance [-HostName <string>]

两个参数都可以从管道中获取数据。这两个参数都是字符串,因此类型解析不起作用。如果IP地址应用了正则表达式验证属性,如果出现非IP地址格式的字符串,PS会自动看到它对IPAddress无效并将其传输到HostName参数中吗?

1 个答案:

答案 0 :(得分:1)

不,powershell无法通过正则表达式解析参数。我同意这很酷,但在v3中是不可能的。

您的选项是

  • 将这两个参数放在不同的参数中,每个参数都有其他独特的参数,因此分辨率可以通过其他参数来完成
  • 不要验证格式,在cmdlet正文中执行其他处理
  • 只提供一个参数,可能是-Host,它接受​​IP或主机名。在内部使用switch -regex来选择它是主机名还是IP,然后相应地进行处理。

如果你不能做#1,我会推荐#3。除非您需要针对每种情况使用其他特殊参数,否则如果用户可以在一个位置使用IP或主机名,则最简单。大多数其他工具都允许使用相同的工具。