Powershell 带有消息命令行args的强制标志

Powershell 带有消息命令行args的强制标志,powershell,parameters,Powershell,Parameters,我似乎不知道这是否可能。我想验证命令行参数,如果它们缺少参数,请打印一条漂亮的消息 比如说 Param( [Parameter(Mandatory=$True,HelpMessage="User Name must be specified.")] [string]$userName ) 现在,如果我从命令行运行脚本,它仍然会在底部打印出这条难看的红色消息: 缺少参数“userName”的参数。请指定“System.String”类型的参数,然后重试 如何让它打印帮助信息?或者更好的是,使用缺

我似乎不知道这是否可能。我想验证命令行参数,如果它们缺少参数,请打印一条漂亮的消息

比如说

Param(
[Parameter(Mandatory=$True,HelpMessage="User Name must be specified.")]
[string]$userName
)
现在,如果我从命令行运行脚本,它仍然会在底部打印出这条难看的红色消息:

缺少参数“userName”的参数。请指定“System.String”类型的参数,然后重试


如何让它打印帮助信息?或者更好的是,使用缺少的参数调用我自己的方法。

我使用的技术是不使参数
[参数(强制=$true)]
,而是设置一个默认值,该值实际上是省略参数时要调用的过程:

param (
    $foo = (Read-Host "You must supply a foo! Enter foo value:")
)

除非用户键入
!,否则不会看到
帮助消息(键入!?以获取帮助。)可以取消参数的强制标志。然后检查一下。如果为null或空,则执行一个
读取主机
(Jeff Zeitlin的回答)