Как проверить, что пользователь нажимает ввод без ввода в скрипте powershell? - PullRequest
6 голосов
/ 29 марта 2011

У меня есть сценарий powershell, где я хочу, чтобы пользователь ввел значение, а сценарий возвращает случайную строку для пароля.Если они просто нажимают ввод, когда запрашивается длина пароля, я хочу, чтобы он был по умолчанию из 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 раз снова и снова.Я бы предпочел просто нажать Enter.

Любая помощь очень ценится!

Ответы [ 4 ]

11 голосов
/ 30 марта 2011

PowerShell великолепен, потому что вы можете очень часто сокращать код, и он работает:)

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

Почему?

[bool]$null         # False
[bool]''            # False
[bool]'something'   # True
3 голосов
/ 29 марта 2011

Я бы сказал «работает как задумано».Потому что длина $ не равна NULL.правильный тест:

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

Так что, возможно, соединение двух тестов.

JP

2 голосов
/ 29 марта 2011

IF ($ length -eq "")

вместо IF ($ length -eq $ NULL)

должно это сделать.

1 голос
/ 29 марта 2011

Абсолютно лучший способ сделать это - использовать параметр для скрипта и использовать атрибуты проверки V2. Это также предотвратит ввод неправильных данных, таких как строки

пары ( [Параметр (Обязательный = $ верно)] [ValidateRange (1,9)] [Int] $ Длина )

Это даст вам лучшую проверку и согласованные и локализованные ошибки.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...