我在远程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 powershell。 Don建议我使用PSExec。这听起来像是解决问题的另一种方法。但是,我无法使用PowerShell。有什么办法让PS在远程PC上工作?
顺便说一下,我不能使用PS 2.0,因为我的网络不允许我安装PS 2.0所需的Windows XP SP3。
答案 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);