在远程PC上运行PowerShell脚本

时间:2009-11-23 21:39:54

标签: powershell sysinternals

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

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

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

不确定我是否遗漏了使用PSExec运行脚本的任何其他内容,或者它是PSExec.exe限制。我想在远程启动一个PS脚本,在本地做一些事情(在本地压缩一些文件并删除旧文件)。

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

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

4 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:8)

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

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

来自here

的示例

答案 2 :(得分:2)

您可以尝试以下方法吗?

psexec \\server cmd /c "echo . | powershell script.ps1"

答案 3 :(得分:2)

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

Student student = new Student("Andrei", 30, "Male");

String studStr = template("#{id}\tName: #{st.getName}, Age: #{st.getAge}, Gender: #{st.getGender}")
                    .arg("id", 10)
                    .arg("st", student)
                    .format();
System.out.println(studStr);