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")
)
是否可以让 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")
)