¿Cómo hago para que Powershell ejecute un archivo por lotes y luego permanezca abierto?

StackOverflow https://stackoverflow.com/questions/14300

  •  08-06-2019
  •  | 
  •  

Pregunta

Por ejemplo;con el antiguo símbolo del sistema sería:

cmd.exe /k mybatchfile.bat
¿Fue útil?

Solución

Vaya a una instancia de cmd (o incluso al propio PowerShell) y escriba esto:

powershell -?

Verá que powershell.exe tiene un parámetro "-noexit" que le indica que no salga después de ejecutar un "comando de inicio".

Otros consejos

Al ejecutar PowerShell.exe, simplemente proporcione el -Sin salida cambiar así:

PowerShell -NoExit -File "C:\SomeFolder\SomePowerShellScript.ps1"

PowerShell -NoExit -Command "Write-Host 'This window will stay open.'"

O si desea ejecutar un archivo y luego ejecutar un comando y mantener la ventana abierta, puede hacer algo como esto:

PowerShell -NoExit "& 'C:\SomeFolder\SomePowerShellScript.ps1'; Write-Host 'This window will stay open.'"

El -Dominio El parámetro está implícito si no se proporciona, y aquí usamos el & para llamar al script de PowerShell y el ; separa los comandos de PowerShell.

Además, en la parte inferior de mi entrada de blog Muestro un cambio rápido en el registro que puede realizar para que PowerShell permanezca siempre abierto después de ejecutar un script/comando, de modo que no necesite proporcionar siempre explícitamente el modificador -NoExit todo el tiempo.

Estoy seguro de que ya lo has descubierto, pero lo acabo de publicar.

$CreateDate = (Get-Date -format 'yyyy-MM-dd hh-mm-ss')

$RemoteServerName ="server name"
$process = [WMICLASS]"\\$RemoteServerName\ROOT\CIMV2:win32_process"  
$result = $process.Create("C:\path to a script\test.bat") 
$result | out-file -file "C:\some path \Log-$CreatedDate.txt"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top