Удаленный запуск powershell с Linux машины через ssh
Всем привет.
С толкнулся с проблемой запуска powershell скриптов на сервере Windows через ssh клиента на Linux.
Ситуация следующая:
На windows сервере лежит powershell скрипт. Допустим с одной командой:
echo "Hello"
Далее я хочу его исполнить через ssh на Linux:
ssh user@server "powershell script_name.ps1"
После этой команды получаю вывод на консоли Hello, т.е все работает, все хорошо.
Но проблема возникает с запуском некоторых командлетов, а именно, если в скриптах powershell используются команды Get-AdUser и подобные, то они не работают:
ssh user@server "powershell Get-AdUser testuser"
get-aduser : Unable to contact the server. This may be because this server does not exist, it is c urrently down, or it does not have the Active Directory Web Services running. At line:1 char:1 + get-aduser testuser + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (testuser:ADUser) [Get-ADUser], ADServerDownEx ception + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Comman ds.GetADUser
Если зайти на сервер Windows локально, и запустить эту команду, то все работает корректно.
Видимо где-то не хватает прав, не получилось разобраться.
На Windows сервере стоит OpenSSH сервер, авторизация по ключу. Дополнительно пробовал импортировать вручную модуль Active-Directory - не помогает.
Куда копать?
Ответы (1 шт):
Проблема решается тремя командами.
Сперва заполняем данные аутентификации:
$creds = New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList "$($srv[0].user)@$($srv[0].domain)", (ConvertTo-SecureString -String $srv[0].pass -AsPlainText -Force )
Далее создаем новую сессию с контроллером(не есть хорошо т.к получается Linux->Windows->DC но могло бы быть просто Linux->Windows)
$session = New-PSSession -ComputerName $srv[0].dc -Credential $creds -Authentication Negotiate
И вызываем команду:
Invoke-Command -session $session -ScriptBlock { Get-ADUser testuser }
Костыль №2
Можно завести дополнительную задачу на сервере с запуском по времени. Также работает, но связь уже будет не Linux->Windows, а Windows->Linux.