PowerShell HelpMessage 默认显示在参数中

PowerShell HelpMessage displayed by default in parameters

是否可以让 PowerShell 在命令行中未指定参数时默认显示帮助消息,而无需用户输入“!”?寻求帮助?

如果我希望我的脚本具有交互性,我是否应该不使用参数而是使用 Read-Host 手动执行它?

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

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

如果您希望在未指定 [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"

遗憾的是,目前无法在没有 Read-Host 的情况下对丢失的参数进行友好提示。 但这可以以比比尔的回答更优雅的方式完成:

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