2013-08-05 5 views
8

При запуске удаленных команд, таких как Enable-PsSession, Invoke-command и т. Д., Нам необходимо предоставить учетные данные с этими командами.Пульт дистанционного управления с учетными данными

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

Также можно сказать, что я сохранил имя пользователя в переменной &, используя переменную во время выполнения команды. Я хочу сделать это и для пароля. Могу ли я это сделать?

Например:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential mydomain\administrator 

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

Как команды должны принимать имя пользователя & пароль автоматически либо от переменной & какой-либо другой механизм?

ответ

13

Вы можете сделать:

$cred = get-credential #fill you credential in the pop-up window 

, а затем:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential $cred 

Помните, что пароль в $cred легко извлекаемый открытом тексте!

2

Powershell по умолчанию будет использовать учетные данные пользователя, выполняющего сеанс powershell, если ни один из них не указан явно.

Так что если вы запускаете Powershell как пользователь с правами администратора на удаленном компьютере, вам не нужно вводить учетные данные при запуске команд.

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

http://blogs.technet.com/b/heyscriptingguy/archive/2011/01/12/use-scheduled-tasks-to-run-powershell-commands-on-windows.aspx

Или вы можете хранить учетные данные в диспетчере учетных данных Windows, что означает, что они шифруются с помощью пользователя Windows.

https://gist.github.com/toburger/2947424

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

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

3

Шифровать все. Создайте объект, который вызывает дешифрованную информацию в качестве пароля. Используйте его так:

read-host -assecurestring | convertfrom-securestring | out-file C:\localdrivespace\username-password-encrypted.txt 
$username = "domain\username" 
$password = cat C:\localdrivespace\username-password-encrypted.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 
Смежные вопросы