Se eu iniciar uma sessão remota do PowerShell com:
Enter-PSSession -ComputerName somecomputer
Então quero executar um processo de longa duração:
[somecomputer]: PS C:\>
C:\SomeApp\DoSomething.exe
Se minha sessão remota for desconectada por qualquer motivo - como interrupção ou reinicialização da rede da máquina local - há alguma maneira de garantir que o comando ainda seja concluído no servidor?
Pelo que estou vendo, parece desaparecer assim que minha sessão PS termina. Eu também tentei Start-Process
, mas parece se comportar da mesma forma.
Estou tentando executar coisas em um servidor sem precisar usar RDP. Ainda sou iniciante no PowerShell, então tenho certeza de que há muitas coisas que estão faltando. Estou no Win10, PowerShell 7, conectando-me ao Windows Server 2016, mas presumo que seria o mesmo em qualquer lugar.
Responder1
Acho que o que você está procurando é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.
Responder2
Parece que não preciso de uma nova sessão, apenas da sintaxe correta:
Invoke-Command `
-ComputerName somecomputer `
-AsJob `
-ScriptBlock {& 'C:\SomeApp\DoSomething.exe'}
O -AsJob
parâmetro executa o comando como um serviço em segundo plano. O -ScriptBlock
parâmetro me permite executar um exe.