想象一下这个 CmdLet:
Request-RemoteAssistance [-IPAddress <string>]
Request-RemoteAssistance [-HostName <string>]
两个参数都可以从管道中获取数据。两个参数都是字符串,所以类型解析不起作用。如果 IP 地址应用了正则表达式验证属性,如果输入了非 IP 地址格式的字符串,PS 是否会自动看到它对 IPAddress 无效并将其通过管道传递给 HostName 参数?
想象一下这个 CmdLet:
Request-RemoteAssistance [-IPAddress <string>]
Request-RemoteAssistance [-HostName <string>]
两个参数都可以从管道中获取数据。两个参数都是字符串,所以类型解析不起作用。如果 IP 地址应用了正则表达式验证属性,如果输入了非 IP 地址格式的字符串,PS 是否会自动看到它对 IPAddress 无效并将其通过管道传递给 HostName 参数?
不,powershell 无法通过正则表达式解析参数集。我同意这很酷,但在 v3 中是不可能的。
你的选择是
-Host
,它接受 IP 或主机名。在内部使用switch -regex
来选择它是主机名还是 IP,然后进行相应的处理。如果你不能做#1,我会推荐#3。除非您在每种情况下都需要其他特殊参数,否则用户可以在一个地方使用 IP 或主机名是最简单的。大多数其他工具都允许这样做。