script remote pssession how computer powershell powershell-v2.0 powershell-remoting

pssession - powershell remote admin



Evita que Powershell salga (8)

¿Me gusta esto?

PowerShell -File c:/myscript.ps1 -NoExit

Sé que hay ese pequeño interruptor de no -noexit para PowerShell.

¿Hay alguna forma de permanecer en la cáscara sin usar ese interruptor?

En otras palabras, quiero un comando de comandos que se ejecute y luego deja el shell abierto.


Básicamente, tiene 3 opciones para evitar que la ventana de la consola de PowerShell se cierre, que describo con más detalle en la publicación de mi blog .

  1. Solución única: ejecute el script desde la consola de PowerShell o inicie el proceso de PowerShell utilizando el interruptor -NoExit. por ejemplo, PowerShell -NoExit "C:/SomeFolder/SomeScript.ps1"
  2. Corrección por secuencia de comandos: agregue una solicitud de entrada al final de su archivo de secuencia de comandos. Ej. Read-Host -Prompt "Press Enter to exit"
  3. Solución global: cambie su clave de registro para dejar siempre abierta la ventana de la consola de PowerShell después de que el script termine de ejecutarse.

Ver mi blog para obtener más información sobre qué claves de registro modificar.

Parece que estás buscando la opción # 1 o # 3.


El bucle while al final de este script trivial me pide un comando y lo ejecuta. Se ejecuta con el entorno del script, por lo que es posible verificar los valores de las variables. Al ingresar "exit" termina el ciclo cuando se ejecuta.

# Do something. cd D:/temp $current_directory = $(pwd) dir write-host # Just add a little space after the dir # Stay in the shell and execute commands. while ($TRUE) { $cmd = Read-Host "PS $(pwd)" if ($cmd[0] -eq ''"'') { iex "& $cmd" } else { iex $cmd } }

Estoy seguro de que otros podrán compartir algunas mejoras, pero esto es un comienzo. Saludos.


Este script no se cerrará si lo ejecuta sin argumentos, por ejemplo, haciendo doble clic en él:

param($Work) # restart PowerShell with -noexit, the same script, and 1 if (!$Work) { powershell -noexit -file $MyInvocation.MyCommand.Path 1 return } # now the script does something # this script just outputs this: ''I am not exiting''


Has probado

$host.enternestedprompt()

Eso detendrá la ejecución y los colocará en un indicador anidado. Cuando salgan de ese indicador, el script terminará y la ventana se cerrará.


No para revivir un hilo de 6 años o algo así, pero debe notárselo a cualquiera que lea que puede terminar su guión con

Stop-Process -processname regedit

si tiene el ajuste de registro (corrección global) habilitado y realmente desea ejecutar un script de cierre automático.


No tengo conocimiento de un comando que pueda ejecutar en el script que impida que el shell salga si no se hubiera invocado con el comando -noexit .

Normalmente uso Read-Host "Press ENTER to continue" al final si no quiero que se cierre el shell. Sin embargo, esto no evitará que el shell se cierre después de presionar enter si no se ha iniciado con -noexit .


"do stuff" Pause

Sí, al igual que la línea de comandos - salida:

do stuff Press Enter to continue...: