Si inicio una sesión remota de PowerShell con:
Enter-PSSession -ComputerName somecomputer
Entonces quiero ejecutar un proceso de larga duración:
[somecomputer]: PS C:\>
C:\SomeApp\DoSomething.exe
Si mi sesión remota se desconecta por cualquier motivo, como una interrupción de la red de la máquina local o un reinicio, ¿hay alguna forma de garantizar que el comando aún se complete en el servidor?
Por lo que estoy viendo, parece desaparecer tan pronto como finaliza mi sesión de PS. También lo intenté Start-Process
, pero parece comportarse igual.
Estoy intentando ejecutar cosas en un servidor sin tener que utilizar RDP. Todavía soy un principiante en PowerShell, así que estoy seguro de que me faltan muchas cosas. Estoy en Win10, PowerShell 7, conectándome a Windows Server 2016, pero supongo que sería igual en cualquier lugar.
Respuesta1
Creo que lo que estás buscando esNew-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.
Respuesta2
Parece que no necesito una nueva sesión en absoluto, sólo la sintaxis correcta:
Invoke-Command `
-ComputerName somecomputer `
-AsJob `
-ScriptBlock {& 'C:\SomeApp\DoSomething.exe'}
El -AsJob
parámetro ejecuta el comando como un servicio en segundo plano. El -ScriptBlock
parámetro me permite ejecutar un exe.