
Como evito que o Windows Powershell trave quando executo um comando nele? Eu sei que no Linux você pode adicionar & no final de um comando para continuar usando o terminal sem fechar esse processo. Existe algo semelhante para o Windows Powershell?
Responder1
Como evito que o Windows Powershell trave quando executo um comando?
Use o Start-Job
cmdlet para iniciar trabalhos em segundo plano.
Este é o equivalente do Powershell a usar &
no final de um comando no Unix/Linux.
Trabalhos em segundo plano do PowerShell
A maneira mais fácil de criar um trabalho em segundo plano do PowerShell é usar o
Start-Job
cmdlet. Você pode especificar um scriptblock com o cmdlet. Por exemplo, o comando a seguir executa um scriptblock simples que obtém os números entre 1 e 50 como trabalho em segundo plano:Start-Job {1..50}
Você pode passar argumentos para um scriptblock com este comando de uma linha:
Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25
Ou você pode executar scripts:
Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential [email protected])
Você pode ver os resultados desses três comandos abaixo. Executei esses comandos no PowerShell 3.0. No entanto, também funcionarão no PowerShell 2.0, embora não veja a coluna PSJobTypeName.
A saída de
Start-Job
é um objeto de fila de trabalhos. Você usa os-Job
cmdlets para gerenciar trabalhos e seus resultados. Você pode referenciar trabalhos por um ID. Na imagem acima, observe como os IDs dos trabalhos saltam de 1 para 3 para 5.
FonteTrabalhos em segundo plano do PowerShell
O link acima fornece muito mais detalhes, cobrindo os seguintes tópicos:
Usando o
Get-WMIObject
cmdlet para criar trabalhos em segundo planoUsando o
Invoke-Command
cmdlet para criar trabalhos em segundo planoGerenciando trabalhos em segundo plano
Recuperando Resultados do Trabalho
Parando e esperando por empregos
Leitura adicional
Responder2
Como alternativa aos trabalhos, você pode usarEspaços de execução: proporcionam maior desempenho e menos sobrecarga para executar comandos em segundo plano.
Implementações: