我正在尝试获取用户输入,如果没有给出输入,则返回默认值。
我将使用$Host.UI.Prompt
,因为根据MSDN(PSHostUserInterface.Prompt Method)它应该提供这个功能 - 或者我认为。
简而言之:$Host.UI.Prompt
方法接受FieldDescription
个对象的集合。每个对象都可以赋予DefaultValue
属性,当用户没有为此特定字段提供输入时,该属性应该返回。
除了默认值部分外,我已按要求完成所有工作。
要查看我的脚本是否搞砸了,我还尝试使用互联网上的示例脚本,例如this一个:
$Host.UI.PromptForChoice
工作正常,当我别无选择时,DefaultChoice的值会按预期返回。
$Host.UI.Prompt
无法按预期提供指定的DefaultValue
。比如,默认值没有显示在提示符上,当我按Enter键而没有给出任何输入时,我得到空/零结果。
有趣的是,当我在PowerGUI中运行这个确切的脚本时,GUI弹出窗口显示相应输入字段中建议的所有已分配的DefaultValues。
所以它似乎工作,只是PowerShell中的$Host.UI
对象似乎在某种程度上被窃听......
我知道我可以轻松解决这个问题,但我不想这样做。 我想理解为什么不做 做的事情,只是因为。
我在Windows 7 Professional 64bit上运行,包含所有最新更新。
这是我的PSVersionTable:
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18444
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
我希望此处的其他人,最好使用相同的设置,可以尝试验证&重现这种行为!
提前感谢!