1

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

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

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

孙:)

4

3 回答 3

1

为此,您不需要 PSExec。检查 PowerShell 开发人员 Lee 的此脚本。

http://poshcode.org/2141

于 2012-01-12T09:39:37.780 回答
1

谢谢大家的评论!我发现了如何做到这一点,这是完整的代码:

$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:请记住,这会将您的管理员密码以明文形式发送..

于 2012-01-12T14:49:44.453 回答
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 上按几次 enter 才能继续输出输出并最终将我返回到提示符。不知道那是怎么回事...

于 2012-01-11T20:54:52.827 回答