使用Invoke命令在Hyper-V上运行的程序挂起



我正试图使用powershell Invoke命令在Hyper-V虚拟机上运行我的软件,但没有成功。主机操作系统-Windows 10。来宾操作系统-也是Windows 10。VM第1代。

我做了一些简单的实验,发现了这个:

如果我运行

Invoke-Command -VMName MY_VM -Credential $Cred -ScriptBlock { calc }

然后我可以在访客系统上看到启动的calc.exe。

但如果我运行mspaint或任何非微软程序,什么都不会发生。该程序只是挂在VM TaskManager中,没有任何效果。

我还尝试使用CLI以多种方式调用InvokeCommand来运行几个不同的程序,但得到了相同的结果。

可能是什么问题?

基本答案是powershell远程连接(或任何远程连接,如rdp、ssh等(发生在单独的登录会话中,不能真正相互交互。

有两种合理的方法可以做到这一点:

  1. 使用PsExec-microsoft sysinternals工具组的一部分
# List sessions - note the session ID of the session you want the process to start in
quser /server:$computername
# Run a process remotely, specifying the logon ID
PsExec.exe -s -i $ID notepad.exe
  1. 使用登录时运行且可见的计划任务。您可以使用powershell的各种New-ScheduledTask命令来创建一个命令,也可以通过Scripting Guy遵循本指南!使用WMIWin32_ScheduledJob方法

请参阅使用powershell在远程计算机上启动gui程序,以了解有关这两个选项的更多详细信息,以及关于为什么在windows中很难做到这一点的详细描述。

最新更新