10

我已经在远程 PC (RPC001) 上安装了 PS 1.0。我使用Windows Sysinternals 工具 PSExec.exe在远程执行以下过程:

 PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2

之后我可以看到远程 PC 上运行的 PowerShell.exe 进程,但它实际上什么也没做,只是挂在那里。我试图在脚本中放入一个简单的“Write-Output/Host”代码。我通过 RTS 在遥控器上运行相同的脚本,它在那里工作。

不确定我是否错过了使用 PSExec 运行脚本的任何其他内容,或者它是 PSExec.exe 限制。我想在远程启动一个 PS 脚本,以便在本地执行某些操作(在本地压缩一些文件并删除旧文件)。

我在 Stackoverflow 中问了一个类似的问题:Run remote process by powershell建议我使用 PSExec。这听起来像是解决问题的另一种方法。但是,我无法让它与 PowerShell 一起使用。有什么办法让PS在远程PC上工作?

顺便说一句,我不能使用 PS 2.0,因为我的网络不允许我安装 PS 2.0 所需的 Windows XP SP3。

4

4 回答 4

11

接受的答案对我不起作用,但以下是:

>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd 
    /c "powershell -noninteractive -command gci c:\"

来自这里的示例

于 2012-04-20T06:41:42.240 回答
9

在进一步调查 PSExec 工具后,我想我得到了答案。我需要添加 -i 选项来告诉 PSExec 以交互模式在远程启动进程:

PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2

如果没有 -i,powershell.exe 将在远程等待模式下运行。有趣的一点是,如果我运行一个简单的蝙蝠(蝙蝠中没有 PS),它可以正常工作。也许这对于 PS 案例来说是特别的?欢迎评论和解释。

于 2009-11-24T00:08:22.180 回答
2

你可以试试下面的吗?

psexec \\server cmd /c "echo . | powershell script.ps1"
于 2011-04-26T10:50:11.493 回答
2

接受的答案对我不起作用,但确实如此。确保该位置的脚本(每个远程服务器上的以下 c:\temp_。servers.txt 包含 IP 地址列表(每行一个)。

psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"
于 2017-06-21T08:12:57.510 回答