我正在尝试使用PSEXEC. PowerShell 脚本通过.cmd批处理文件调用。我们这样做的原因是更改执行策略,运行 powershell 脚本然后再次重置执行策略:
在远程服务器上do-tasks.cmd看起来像:
powershell -command "&{ set-executionpolicy unrestricted}"
powershell DoTasks.ps1
powershell -command "&{ set-executionpolicy restricted}"
Run Code Online (Sandbox Code Playgroud)
PowerShell 脚本DoTasks.ps1现在只是这样做:
Write-Output "Hello World!"
Run Code Online (Sandbox Code Playgroud)
这两个脚本都存在于c:\windows\system32(目前)中,因此它们位于 PATH 中。
在原始服务器上,我这样做:
psexec \\web1928 -u administrator -p "adminpassword" do-tasks.cmd
当它运行时,我在命令行收到以下响应:
c:\Windows\system32>powershell -command "&{ set-executionpolicy unrestricted}"
并且脚本不再运行。
我不能按 ctrl-c 来破坏脚本,我只能看到 ^C 字符,我可以从键盘输入输入,字符会回显到控制台。
在远程服务器上,我看到 PowerShell.exe 和 CMD.exe 正在任务管理器的进程选项卡中运行。如果我结束这些进程,那么控制将返回到原始服务器上的命令行。
我已经用一个简单的.cmd批处理文件尝试了这个,@echo hello world它工作得很好。
do-tasks.cmd通过 RDP 会话在远程服务器上运行也可以正常工作。
原始服务器运行 Windows 2003 SP2,远程服务器运行 Windows 2008 SP2。
为什么我的远程批处理文件在通过执行时卡住了 …