2016-07-25 232 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") 
)