答案 0 :(得分:3)
它是一回事。这里发生的是参数可以(有时,通常)使用命名或位置。
因此,在这种情况下,您仍然为-Prompt
参数提供值,您只是不是通过名称专门引用它。
看到发生这种情况的一种奇特方法是使用Trace-Command
cmdlet:
Trace-Command -Name ParameterBinding -Expression { Read-Host "Hello" } -PSHost
输出:
DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Read-Host] DEBUG: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Read-Host] DEBUG: ParameterBinding Information: 0 : BIND REMAININGARGUMENTS cmd line args to param: [Prompt] DEBUG: ParameterBinding Information: 0 : BIND arg [System.Collections.Generic.List`1[System.Object]] to parameter [Prompt] DEBUG: ParameterBinding Information: 0 : COERCE arg to [System.Object] DEBUG: ParameterBinding Information: 0 : Parameter and arg types the same, no coercion is needed. DEBUG: ParameterBinding Information: 0 : BIND arg [System.Collections.Generic.List`1[System.Object]] to param [Prompt] SUCCESSFUL DEBUG: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Read-Host] DEBUG: ParameterBinding Information: 0 : CALLING BeginProcessing Hello: hi DEBUG: ParameterBinding Information: 0 : CALLING EndProcessing hi
答案 1 :(得分:2)
Read-Host
的帮助文字显示了语法图:
PS> help Read-Host
Read-Host [[-Prompt] <Object>] [-AsSecureString]
[-InformationAction {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend}]
[-InformationVariable <System.Stringr>] [<CommonParameters>]
...
可以从内置帮助中获取有关如何阅读这些语法图的完整说明(请参阅help about_Command_Syntax
。)相关部分是:
-- Brackets ([ ]) indicate optional items. A parameter and its value can be optional, or the name of a required parameter can be optional.
因此,对于-Prompt
参数,参数和的值都是可选的。