Отправить пароль SecureString из файла CMD в Powershell [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть файл CMD, из которого я должен запустить сценарий Powershell, передав имя пользователя и пароль: т.е. : PowerShell -File "% 1" -Computer "% 2" -Username "% 3" -Password "% 4". Есть ли способ отправить пароль SecureString из CMD в сценарий PowerShell?

Позвольте мне добавить еще несколько моментов, чтобы прояснить мое затруднительное положение: Поэтому всякий раз, когда я выполняю этот CMD-файл, содержащий указанную выше команду Powershell, я передаю значения для всех параметров (от% 1% до% 4 %) в командной строке. Теперь, когда я передаю эти аргументы, они передаются в виде открытого текста, и все регистрируется в Мониторе событий с идентификатором 4688 с включенным расширенным аудитом. Чего я хочу. - пароль, который в этом случае не должен отображаться.

1
задан 4 October 2017 в 09:33
1 ответ

Нет. SecureString - это конструкция Powershell, которая не имеет смысла в устаревшей среде cmd / batch.

Если вы не хотите, чтобы пароль был видимым, вам нужно найти другой способ передачи, чем непосредственно в команде (что, вероятно, означает изменение вашего сценария Powershell на , но не на , принимающий параметр пароля в виде обычного текста).

Наиболее распространенная вещь, которую я видел, - это экспорт объекта PSCredential в файл с использованием Export-CliXml , а затем импортировать его в переменную перед вызовом функции сценария (через Import-CliXml ) и передать переменную функции. Предостережение к этому подходу заключается в том, что экспортированный файл не переносится. Шифрование в XML привязано к и пользователю и машине, которая выполнила экспорт.

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

Перед запуском сценария вам необходимо экспортировать учетные данные в файл.

# interactively prompt for the credential
$cred = get-credential

# export the credential object to a file
$cred | Export-Clixml .\mycred.xml

Теперь в сценарии CMD вы в основном меняете способ использования Powershell при вызове -Файл для использования -Команда , чтобы вы могли импортировать файл учетных данных обратно в переменную перед передачей его скрипту.

powershell.exe -C "$cred = Import-Clixml .\mycred.xml; .\%1 -Computer %2 -Credential $cred"
5
ответ дан 3 December 2019 в 17:02

Теги

Похожие вопросы