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

PowerShell远程执行虚拟机本地exe程序失败问题求助

远程调用虚拟机本地exe程序失效问题记录

我已检索并尝试了多种命令变体均未生效,也查阅了Stack Overflow上所有相关参考资料,逐一验证了微软技术社区文档中列出的所有PowerShell运行可执行文件的方法。
我的核心需求是运行存放于远程虚拟机上的exe程序:我用C#开发发布了一款控制台应用,在虚拟机本地直接双击exe就能正常运行、完成全部任务,但尝试了多种远程调用方式都无法实现预期效果。

已尝试的调用方法

  • Invoke-VMScript
  • Win32_Process.Create()
  • Invoke-Command
  • Start-Process
  • psexec
  • Invoke-WmiMethod
  • [diagnostics.process]::start

部分测试命令示例

Invoke-VMScript -VM VMName -GuestUser $(User_ADMIN) -GuestPassword "$(ADMIN_PASSWORD)" -ScriptText { D:\Path\to\ConsoleAppName.exe }

Invoke-VMScript -VM VMName -GuestUser $(User_ADMIN) -GuestPassword "$(ADMIN_PASSWORD)" -ScriptText { cmd /c D:\Path\to\ConsoleAppName.exe }

# 该ps1文件内部包含运行exe的命令,同类写法也试过用bat文件实现
Invoke-VMScript -VM VMName -GuestUser $(User_ADMIN) -GuestPassword "$(ADMIN_PASSWORD)" -ScriptText { PowerShell -NoProfile -ExecutionPolicy Bypass -Command "D:\Path\to\ConsoleAppPS.ps1" } 

Invoke-Command -ComputerName VMName -ScriptBlock { & "D:\Path\to\ConsoleAppName.exe" }
# 也试过先通过 $session = New-PSSession -computername VMNAME -credential $cred 创建会话再执行
# 其余多种变体写法均测试过,没有效果

我也尝试过先通过New-PSSession创建远程会话再执行命令等其他变体写法,均未成功,恳请大家提供可行方案或替代实现思路。

更新1:最新测试思路是将exe执行命令写入虚拟机本地的bat/ps1脚本文件,再通过Invoke-VMScript cmdlet调用对应脚本,共测试了三种场景:

场景1

创建包含如下内容的ps1脚本文件:

Set-Location "D:\folder\path\to\ConsoleAppName"
$cmd = "cmd /c `"ConsoleAppName.exe"`"

Write-Output "Script execution started"
Invoke-Expression -Command $cmd >> TestOutput.txt
Write-Output "Script executed"

之后调用如下cmdlet执行该脚本:

Invoke-VMScript -VM VMName -GuestUser $(User_ADMIN) -GuestPassword "$(ADMIN_PASSWORD)" -ScriptText { PowerShell -NoProfile -ExecutionPolicy Bypass -Command "D:\Path\to\ps1file.ps1" }

场景2

创建同上内容的ps1文件,同时编写bat文件,内容为:PowerShell -NoProfile -ExecutionPolicy Bypass -Command "D:\Path\to\ps1file.ps1",再通过如下Invoke-VMScript命令调用bat文件:

Invoke-VMScript -VM VMName -GuestUser $(User_ADMIN) -GuestPassword "$(ADMIN_PASSWORD)" -ScriptText { cmd /c D:\Path\to\bat\file.bat }
# 也试过用Invoke-Item替代cmd /c,同样无效

场景3

psexec调用方式:

D:\NewFolder\PAExec\psexec.exe \\VMIP -u $(User_ADMIN) -p "$(ADMIN_PASSWORD)" -i -s cmd /c D:\folder\path\to\ConsoleAppName\ConsoleAppName.exe

psexec返回报错信息如下:

PsExec v2.34 - Execute processes remotely
...
The handle is invalid.
Connecting to xx.xxx.xx.xxx...

Couldn't access xx.xxx.xx.xxx:
Connecting to xx.xxx.xx.xxx...
##[error]Cmd.exe exited with code '6'. 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:36:14