Главная > Powershell > Автоматическая аутентификация в Powershell

Автоматическая аутентификация в Powershell

При подключении к удалённому компьютеру через Powershell, например с помощью командлета Enter-PSSession по умолчанию используются учётные данные текущего пользователя (т.е. логин и пароль пользователя, сидящего за локальным компьютером).

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

Если же эти два условия не выполняются, и нужно использовать альтернативные учётные данные, нужно использовать параметр -Credential, после которого указать имя пользователя, а при выполнении командлета появится окно, в котором нужно ввести пароль.

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

Решением этой проблемы может послужить заранее введённый логин и зашифрованный пароль, который можно хранить в текстовом файле.

Для того, чтобы зашифровать пароль нужно использовать следующую конструкцию:

Read-Host -Prompt "Введите пароль" -AsSecureString |
    ConvertFrom-SecureString | Set-Content C:\password.txt

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

Чтобы использовать зашифрованный пароль его даже не нужно расшифровывать, нужно лишь создать соответствующей объект PSCredentials:

$password = Get-Content C:\password.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential("Login",$password)

И использовать полученный объект:

Enter-PSSession computer -Credential $cred
Реклама
Рубрики:Powershell Метки: , ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: