我有一个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。我宁愿直接进入。
非常感谢任何帮助!
答案 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] $长度 )
这将为您提供更好的验证以及一致和本地化的错误。
希望这有帮助