You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinRS远程登录后,PowerShell脚本无法切换目录执行Java文件求助

问题分析与解决方法

你的脚本存在核心问题:后面两条powershell.exe -c命令都是在本地PowerShell进程中执行的,并没有进入winrs启动的远程cmd会话。winrs /r:... cmd.exe会启动一个交互式远程cmd窗口,后续命令不会自动接入这个会话,而是独立在本地运行,自然无法操作远程主机的目录和程序。

正确解决方案

方案1:串联远程命令一次性执行

把需要在远程主机执行的命令用&&连接,通过winrs直接远程执行,无需进入交互式会话:

# 设置信任主机(仅需执行一次,可单独运行)
powershell.exe -c "winrm set winrm/config/client '@{TrustedHosts=remoteHostServer}'"
# 远程切换目录并运行Java程序
powershell.exe -c "winrs /r:remoteHostServer /username:admin /password:xxxxxx 'cd C:\test && java test.java'"

方案2:通过本地脚本批量执行远程命令

如果要执行多条复杂命令,可先把命令写入本地cmd脚本,再通过winrs远程调用:

  1. 本地创建remote_tasks.cmd文件,内容如下:
cd C:\test
java test.java
  1. 修改PowerShell脚本:
powershell.exe -c "winrm set winrm/config/client '@{TrustedHosts=remoteHostServer}'"
# 替换为你本地remote_tasks.cmd的实际路径
powershell.exe -c "winrs /r:remoteHostServer /username:admin /password:xxxxxx 'cmd /c C:\local_path\remote_tasks.cmd'"

额外注意事项

  • 脚本中明文写密码存在安全风险,建议改用Get-Credential获取凭据,或配置WinRM凭据缓存避免硬编码。
  • 如果远程主机的Java未加入系统环境变量,需写全Java.exe的绝对路径,例如:"cd C:\test && C:\Program Files\Java\jdk1.8.0_301\bin\java.exe test.java"

内容的提问来源于stack exchange,提问作者RDX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:12:43