Como faço para que o Powershell execute um arquivo em lote e permaneça aberto?

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

  •  08-06-2019
  •  | 
  •  

Pergunta

Por exemplo;com o prompt de comando antigo seria:

cmd.exe /k mybatchfile.bat
Foi útil?

Solução

Entre em uma instância do cmd (ou mesmo no próprio PowerShell) e digite isto:

powershell -?

Você verá que powershell.exe possui um parâmetro "-noexit" que informa para não sair após executar um "comando de inicialização".

Outras dicas

Ao executar o PowerShell.exe, basta fornecer o -Sem saída mude assim:

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

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

Ou se quiser executar um arquivo e depois executar um comando e manter a janela aberta, você pode fazer algo assim:

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

O -Comando parâmetro está implícito se não for fornecido, e aqui usamos o & para chamar o script do PowerShell e o ; separa os comandos do PowerShell.

Além disso, na parte inferior minha postagem no blog Eu mostro uma rápida alteração no registro que você pode fazer para que o PowerShell sempre permaneça aberto após a execução de um script/comando, para que você não precise fornecer explicitamente a opção -NoExit o tempo todo.

Tenho certeza que você já descobriu isso, mas acabei de postar

$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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top