会话结束后如何保持远程powershell命令有效?

Mih*_*yan 6 windows powershell cmd remote-access powershell-2.0

我使用以下命令setup_server.exe在远程 Windows机器上运行:

powershell -command "$encpass=convertto-securestring -asplaintext RPASSWORD -force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList RUSER,$encpass; invoke-command -computername RCOMPUTERNAME -scriptblock {setup_server.exe} -credential $cred;"
Run Code Online (Sandbox Code Playgroud)

setup_server.exe的任务是创建一些配置文件并启动my_server.exe(一些守护进程),然后它完成。我想my_server.exesetup_server.exe完成后继续运行。

因此,当我通过本地机器上的 CMD 执行此操作(即仅从setup_server.exeCMD运行)时,它可以工作,但是当我通过远程主机上的 powershell 执行此操作时,它不起作用。即my_server.exe开始,但在setup_server.exe关闭后服务器也被关闭(被杀死)。

所以问题如下:我应该使用哪些 powershell 标志/cmdlet 来使所描述的场景像在本地模式下一样工作?

注意:我想同步获取 的输出setup_server.exe,因此运行带有-AsJob标志的远程命令,可能对我不起作用,尽管我什至不知道它是否会在setup_server.exe结束后保持服务器的活动状态。

Kei*_*ill 1

命令完成后保持远程 PowerShell 会话运行的方法是使用 PSSession,例如:

$s = new-PSSession computername
Invoke-Command -session $s { ..script.. }
... do other stuff, remote powershell.exe continues to run
Remove-PSSession $s # when you're done with the remote session
Run Code Online (Sandbox Code Playgroud)

一般来说,exe 应该独立于启动它们的应用程序运行。

  • 感谢您抽出时间回答@Keith Hill,但它不起作用。我试过这个:`powershell -command \"\$encpass=convertto-securestring -aslaintext mypassword -force;\$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,\$encpass;\$session = new-PSSession -computername HOSTNAME -credential \$cred; invoke-command -session \$session -scriptblock {setup_server.exe};\"` 但在 setup_server 完成后,服务器再次被终止。 (2认同)