如何在PowerShell脚本中检查用户是否输入而没有输入?

时间:2011-03-29 19:33:26

标签: powershell

我有一个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}

其他部分工作得很好;然而,当生成密码时,我一直发现自己一遍又一遍地输入9。我宁愿直接进入。

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:11)

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

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

为什么?

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

答案 1 :(得分:3)

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

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

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

JP

答案 2 :(得分:2)

IF($ length -eq“”)

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

应该这样做。

答案 3 :(得分:1)

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

PARAM( [参数(强制性= $真)] [ValidateRange(1,9)] [INT] $长度 )

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

希望这有帮助