Запросить учетные данные пользователя в пакетном файле - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь выяснить, как предложить пользователю ввести его учетные данные и обработать пароль внутри командного файла.

После некоторого количества попыток я придумал следующий код:

@echo off

set password=

FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -NoLogo -NoProfile  -Command ^(Get-Credential "ag\%username%"^).GetNetworkCredential^(^).password;`) DO (
  set password=%%F
)
echo %password%

Это нормально работает, если пользователь вводит непустой пароль. Но если пользователь ничего не вводит или просто закрывает диалоговое окно нажатием кнопки «отмена», переменная «пароль» неожиданно содержит строку «ECHO ist ausgeschaltet (OFF)». вместо пустой строки.

Кто-нибудь знает, как я могу вернуть пустую строку для пароля в этом случае?

Заранее спасибо твердый

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Переменная окружения всегда имеет значение.Если назначена пустая строка, то переменная удаляется (в процессе выполнения).

SET FOO=

Переменная FOO удаляется с помощью приведенного выше оператора.

Поэтому необходимо проверить, является липеременная определена и не пуста.

if defined FOO echo FOO:%FOO%
if not defined FOO echo FOO is not defined
0 голосов
/ 17 сентября 2018

В действительности password не определено.
То, что вы получили ECHO ist ausgeschaltet (OFF), является выводом команды ECHO, как вы ее называете без данных.

Чтобы увидеть реальный контент, вы можете использовать set password или ECHO(, странная открывающая скобка предотвращает проблемы, когда содержимое вашей переменной пустое

...
echo( %password%
set password

Btw.Вам следует использовать расширенный синтаксис набора, чтобы избежать проблем с конечными пробелами.

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