0

想象一下这个 CmdLet:

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

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

4

1 回答 1

1

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

你的选择是

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

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

于 2012-09-07T18:22:30.003 回答