啟動遠端 PowerShell 命令並使其在斷開連線的情況下完成

啟動遠端 PowerShell 命令並使其在斷開連線的情況下完成

如果我使用以下命令啟動遠端 PowerShell 會話:

Enter-PSSession -ComputerName somecomputer

然後我想執行一個長時間運行的進程:

[somecomputer]: PS C:\>C:\SomeApp\DoSomething.exe

如果我的遠端會話由於某種原因斷開連接 - 例如本地電腦網路中斷或重新啟動 - 有什麼方法可以確保命令仍然在伺服器上完成?

據我所知,一旦我的 PS 會話結束,它似乎就會消失。我也嘗試過Start-Process,但它的行為似乎是一樣的。

我正在嘗試在伺服器上運行一些東西,而無需使用 RDP。我使用的是 Win10、PowerShell 7,連接到 Windows Server 2016,但我認為在任何地方都是一樣的。

答案1

我想你正在尋找的是New-PSsesion

Enter-PSSession: Starts a temporary interactive session with a remote computer. You can have only one interactive session at a time using Enter-PSSession. Exiting the session destroys it.
New-PSSession: Creates a PERSISTENT connection to a local or remote computer. Exiting the session does not destroy it, it is still available to connect to again unless you do something like Disconnect-PSSession or it times out.
Furthermore, with New-PSSession you can assign the session a Name or to a variable for easier re-use, etc.

答案2

看起來我根本不需要新會話,只需要正確的文法:

Invoke-Command `
-ComputerName somecomputer `
-AsJob `
-ScriptBlock {& 'C:\SomeApp\DoSomething.exe'}

-AsJob參數將命令作為後台服務運行。該-ScriptBlock參數讓我運行一個 exe。

相關內容