【问题标题】:How to check if the user hits enter with no input in a powershell script?如何检查用户是否在powershell脚本中没有输入而点击输入?
【发布时间】:2011-03-30 04:01:25
【问题描述】:

我有一个 powershell 脚本,我希望用户在其中输入一个值,该脚本返回一个随机字符串作为密码。如果他们只是在提示输入密码长度时按 Enter 键,我希望它默认为 9 个字符。

如何处理无输入?

我试过这样的方法,但觉得不太对:

Write-Host 输入密码长度要求:

$length = Read-Host
IF ( $length -eq $NULL) 
    { Do continue on with the value of 9 for the length}
ELSE
    {Use $length for the rest of the script}

else 部分工作正常;但是,在生成密码时,我发现自己一遍又一遍地输入 9。我宁愿直接按回车。

非常感谢任何帮助!

【问题讨论】:

    标签: powershell


    【解决方案1】:

    PowerShell 很棒,因为您可以经常缩短代码并且它可以工作 :)

    if (!$length) { 
      Do continue on with the value of 9 for the length
    } ...
    

    为什么?

    [bool]$null         # False
    [bool]''            # False
    [bool]'something'   # True
    

    【讨论】:

    • 在 if 块中,将 $Length 设置为 9 即可。
    • @jason 我只想展示条件,我想 John 有能力完成剩下的工作 :) 无论如何,感谢审核。
    • John 可能没有意识到这一点,我有时喜欢直言不讳。 :)
    【解决方案2】:

    我会说“按设计工作”。因为 $length 不是 NULL。正确的测试是:

    if ($length -eq [string]::empty)
    

    所以也许是两个测试的结合。

    日本

    【讨论】:

      【解决方案3】:

      IF ($length -eq "")

      而不是 IF ($length -eq $NULL)

      应该这样做。

      【讨论】:

        【解决方案4】:

        执行此操作的绝对最佳方法是将其作为脚本参数并使用 V2 验证属性。这也将防止他们输入不良数据,例如字符串

        参数( [参数(强制=$true)] [验证范围(1,9)] [诠释] $长度 )

        这将为您提供更好的验证以及一致和本地化的错误。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2014-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-08
          • 1970-01-01
          • 2012-02-06
          相关资源
          最近更新 更多