Запуск Powershell повышен с PSExec (enable-psremoting) - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь включить -ssmoting с PSexec на моих серверах с помощью следующей команды:

psexec.exe \\server cmd /c "echo . | powershell (-verb runas -argumentlist (enable-psremoting -force))"

, но это не работает.Я предполагаю, что я испортил мои двойные кавычки.Любая помощь?

Sune:)

Ответы [ 3 ]

1 голос
/ 12 января 2012

Вам не нужен PSExec для этого.Проверьте этот скрипт от разработчика PowerShell Lee.

http://poshcode.org/2141

1 голос
/ 12 января 2012

Спасибо за комментирование всех! Я узнал, как это сделать, и это завершенный код:

$user = "youruser"
$p = Read-Host "Enter domain password for $adminuser"
cls

$expression1 = "enable-psremoting -force"
$commandBytes1 = [System.Text.Encoding]::Unicode.GetBytes($expression1)
$encodedCommand1 = [Convert]::ToBase64String($commandBytes1)

$expression2 = "Set-ExecutionPolicy remotesigned -Force”
$commandBytes2 = [System.Text.Encoding]::Unicode.GetBytes($expression2)
$encodedCommand2 = [Convert]::ToBase64String($commandBytes2)

$expression3 = "Restart-Service winrm”
$commandBytes3 = [System.Text.Encoding]::Unicode.GetBytes($expression3)
$encodedCommand3 = [Convert]::ToBase64String($commandBytes3)

foreach ($server in (get-content c:\temp\enablepsremotinglist.txt))
{
    echo " "
    echo "Running on $server"   
    echo "--------------------------------------- "
    echo " "    
    psexec.exe \\$server -h -u no\$user -p $p cmd /c "echo . | powershell -EncodedCommand $encodedCommand1"
    psexec.exe \\$server -h -u no\$user -p $p cmd /c "echo . | powershell -EncodedCommand $encodedCommand2"
    psexec.exe \\$server -h -u no\$user -p $p cmd /c "echo . | powershell -EncodedCommand $encodedCommand3"
}

Я надеюсь, что это может помочь кому-то еще однажды :) PS: Пожалуйста, имейте в виду, что это отправит ваш пароль администратора как открытый текст

0 голосов
/ 12 января 2012

Похоже, вы пытаетесь вызвать PowerShell для запуска с повышенными правами.Это может быть невозможно сделать удаленно ... Я смог заставить это работать на компьютере без UAC (сервер 2003):

$c = Get-Credential
$u = $c.UserName
$p = $c.GetNetworkCredential().Password

$path = "C:\SysinternalsSuite"
& "$path\psexec.exe" \\server -u $u -p $p powershell.exe -Command "Enable-PSRemoting -Force"

По какой-то причине мне пришлось нажать Enterраз на оболочке, чтобы он выплевывал вывод и в конечном итоге возвращал меня к приглашению.Не уверен, что с этим ...

...