У меня есть файл CMD, из которого я должен запустить сценарий Powershell, передав имя пользователя и пароль: например: PowerShell -File "% 1" -Computer "% 2" -Username "% 3" -Password "% 4". Есть ли способ отправить пароль SecureString из CMD в сценарий PowerShell?
Позвольте мне добавить еще несколько моментов, чтобы прояснить мою затруднительную ситуацию: поэтому всякий раз, когда я выполняю этот CMD-файл, содержащий указанную выше команду Powershell, я передаю значения для всех параметров (от% 1% до% 4%) в командной строке . Теперь, когда я передаю эти аргументы, они передаются в виде открытого текста, и все регистрируется в мониторе событий с идентификатором 4688 с включенным расширенным аудитом. Я хочу, чтобы в этом случае пароль не отображался.
Нет. 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 от использования -File
использовать -Command
так что вы можете импортировать файл учетных данных обратно в переменную, прежде чем передавать его скрипту.
powershell.exe -C "$cred = Import-Clixml .\mycred.xml; .\%1 -Computer %2 -Credential $cred"