启动Powershell从PSExec升级(enable-psremoting)

时间:2012-01-11 19:45:55

标签: powershell active-directory cmd psexec

我正在尝试使用以下命令在我的服务器上使用PSexec启用-psremoting:

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

但它不起作用。我猜我弄乱了双引号。有什么帮助吗?

淑娜:)

3 个答案:

答案 0 :(得分:1)

你不需要PSExec。由PowerShell开发人员Lee检查此脚本。

http://poshcode.org/2141

答案 1 :(得分:0)

看起来您正在尝试调用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"

出于某种原因,虽然我不得不在shell上输入几次,以便继续吐出输出并最终返回我的提示。不知道那是什么......

答案 2 :(得分:0)

感谢所有评论!我发现了如何做,这是完成的代码:

$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:请记住,这会将您的adminpassword作为明文发送..