windows - 在远程机器上调用后台命令

标签 windows powershell vmware

我想从 powershell 脚本在远程主机上生成一个进程,并让该进程在本地脚本退出后继续运行。远程命令是VMware Workstation自带的vmrun.exe程序,启动虚拟机后立即退出。

我看到的行为是,只要远程 session 以脚本结束,vmware 进程就会被终止。我希望进程继续运行。这是我目前使用的:

function Start-VM {
    param( [String] $vmwareDir, [String] $vmDir, [String] $vm )
    [String] $command = "& `"$vmwareDir\vmrun.exe`" start `"$vmDir\$vm`" nogui"
    Invoke-Expression $command
}

[String] $hostname = "myhost.fqdn"
[String] $vmwareDir = "C:\Program Files (x86)\VMware\VMware Workstation"
[String] $vmDir = "C:\Path\To\VM"
[String] $vm = "my vm.vmx"

$session = New-PSSession -ComputerName $hostname
Invoke-Command -Session $session -AsJob -ScriptBlock ${function:Start-VM} -ArgumentList $vmwareDir, $vmDir, $vm
if( !$? ){
    Write-Host "Failed to start VM"
    exit
}
sleep 60

使用此代码,VM 在 myhost.fqdn 上启动并运行直到 60 秒 sleep 结束,之后它与本地脚本一起被杀死。在这种情况下,我只是创建一个 PSSession 对象作为概念证明,即远程进程只存在于 session 期间。

提前致谢!

编辑:

如果它有助于阐明我想做什么,Linux 中的功能等价物将是这样的:

ssh myhost.fqdn "nohup my-command &>/dev/null &"

最佳答案

this answer ,我分析了问题并给出了解决方法(见最后编辑)。我不确定您的问题是否真的重复。

关于windows - 在远程机器上调用后台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728192/

相关文章:

在C中为内核驱动程序创建一个目录

windows - Ubuntu 22.04 RDP 问题

Windows XP、Vista 和现在的 Windows 7,这是软件公司的维护噩梦吗?

windows - cmd.exe 返回 "Not enough storage is available to process this command."

xml - 在 powershell 中访问 XMLAttribute 的 #text 属性

powershell - 如何将标题添加到现有变量

powershell - curl --data-binary 在 PowerShell 中

c++ - 虚拟机中的OpenGL问题

linux - VMware 虚拟机无法从命令行恢复

linux - Centos 的 Apache 配置