2016-07-25 189 views
1

中显示的PowerShell HelpMessage默认情况下,当用户不必输入“!?”时,如果未在命令行中指定参数,PowerShell是否可以显示帮助消息求助?默认情况下在参数

如果我希望我的脚本是交互式的,我不应该使用param,而是使用read-host来代替manualy:

param ( 
    [Parameter(Mandatory=$true,HelpMessage="Enter desired password.")][string]$desired_password, 
    [Parameter(Mandatory=$true,HelpMessage="Please input target hostnames.")][string[]]$target_hosts 
) 

在这种情况下最好的方法是什么?

回答

1

如果您不想指定[String]参数,总是要显示一些帮助文本,那么您必须自己写这个。例如:

param(
    [String] $TestParameter 
) 

if (-not $TestParameter) { 
    Write-Host "This is help for -TestParameter." 
    while (-not $TestParameter) { 
    $TestParameter = Read-Host "Enter a value" 
    } 
} 

"Argument for -TestParameter: $TestParameter" 
+0

非常感谢您的回答,所以如果我得到这个直,没有办法覆盖默认的消息吧? – trox

+0

如果你不想指定一个参数,总是要显示一些帮助文本,那么你可以自己编写代码来完成这个任务,正如我的例子所示。 –

0

不幸的是,目前无法在没有读取主机的情况下提供缺少参数的友好提示。 但是,这可能会在一个更优雅的方式来进行比比尔的回答是:

param(
    [String] $TestParameter=$(Read-Host -prompt "Enter the test parameter") 
)