Запустить удаленную команду PowerShell и завершить ее даже при отсутствии подключения

Запустить удаленную команду PowerShell и завершить ее даже при отсутствии подключения

Если я начну удаленный сеанс PowerShell с помощью:

Enter-PSSession -ComputerName somecomputer

Затем я хочу выполнить длительный процесс:

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

Если мой удаленный сеанс по какой-либо причине прерван (например, из-за сбоя локальной сети или перезагрузки), есть ли способ гарантировать, что команда все равно будет выполнена на сервере?

Из того, что я вижу, это, кажется, уходит, как только моя сессия PS умирает. Я также пробовал Start-Process, но, кажется, это ведет себя так же.

Я пытаюсь запустить что-то на сервере без необходимости RDP. Я все еще новичок в PowerShell, поэтому я уверен, что есть много вещей, которые я упускаю. Я на 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.

Связанный контент