Saturday 7 April 2018

Comece processo waitforexit powershell


Iniciar processo waitforexit powershell
Obter através da App Store Leia esta publicação em nosso aplicativo!
Usando o comando start-process e - wait no Powershell.
Eu sou novo no Powershell e não tenho muito um fundo de programação, apenas tentando usá-lo para embalagens de software. De qualquer forma, descobri sobre o comando start-process com o parâmetro - Wait, e funciona muito para a maioria das coisas. O que eu notei é que não só espera o processo que você especifica, ele espera por qualquer subprocesso, mesmo depois que o processo principal já não está sendo executado. Normalmente isso é bom, mas tenho uma situação estranha. Estou executando um complexo arquivo de lote do Oracle com o processo de início. O arquivo em lote eventualmente executa setup. exe, que é o que eu realmente quero esperar, mas outros processos também geram que nunca parar. Então, se eu usar o parâmetro - wait, o script nunca pára mesmo depois que o setup. exe não estiver sendo executado. O mais próximo que encontrei é usar isso:
Isso funciona, mas eu pensaria que haveria uma maneira melhor sem ter que usar um comando de tempo limite. Alguma ideia?

Wait-Process.
Neste artigo.
Descrição.
O cmdlet Wait-Process espera que um ou mais processos em execução sejam interrompidos antes de aceitar a entrada. No console do Windows PowerShell, este cmdlet suprime o prompt de comando até que os processos sejam interrompidos. Você pode especificar um processo por nome de processo ou ID de processo (PID) ou canalizar um objeto de processo para Wait-Process.
Wait-Process funciona apenas em processos em execução no computador local.
Exemplo 1: Pare um processo e aguarde.
Este exemplo interrompe o processo do bloco de notas e, em seguida, espera que o processo seja interrompido antes de continuar com o próximo comando.
O primeiro comando usa o cmdlet Get-Process para obter o ID do processo do bloco de notas. Ele armazena o ID na variável $ nid.
O segundo comando usa o cmdlet Stop-Process para interromper o processo com o ID armazenado em $ nid.
O terceiro comando usa Wait-Process para aguardar até que o processo do Bloco de notas seja interrompido. Ele usa o parâmetro Id do Wait-Process para identificar o processo.
Exemplo 2: Especificando um processo.
Esses comandos mostram três métodos diferentes de especificar um processo para Wait-Process. O primeiro comando obtém o processo do bloco de notas e o armazena na variável $ p.
O segundo comando usa o parâmetro Id, o terceiro comando usa o parâmetro Name e o quarto comando usa o parâmetro InputObject.
Esses comandos têm os mesmos resultados e podem ser usados ​​de forma intercambiável.
Exemplo 3: Aguarde os processos por um tempo especificado.
Este comando aguarda 30 segundos para os processos Outlook e Winword pararem. Se ambos os processos não estiverem parados, o cmdlet exibirá um erro de não-término e o prompt de comando.
Parâmetros necessários.
Especifica as IDs do processo dos processos. Para especificar várias IDs, use vírgulas para separar as IDs. Para encontrar o PID de um processo, digite Get-Process.
Especifica os processos enviando objetos do processo. Digite uma variável que contenha objetos de processo ou digite um comando ou expressão que obtenha os objetos do processo, como o cmdlet Get-Process.
Especifica os nomes dos processos dos processos. Para especificar vários nomes, use vírgulas para separar os nomes. Os caracteres curinga não são suportados.
Parâmetros opcionais.
Especifica o tempo máximo, em segundos, que este cmdlet aguarda os processos especificados para parar. Quando esse intervalo expira, o comando exibe um erro que não termina, que lista os processos que ainda estão em execução e termina a espera. Por padrão, não há tempo limite.

Processo de início.
Neste artigo.
Descrição.
O cmdlet Start-Process inicia um ou mais processos no computador local. Para especificar o programa que é executado no processo, insira um arquivo executável ou arquivo de script ou um arquivo que pode ser aberto usando um programa no computador. Se você especificar um arquivo não executável, Start-Process inicia o programa associado ao arquivo, semelhante ao cmdlet Invoke-Item.
Você pode usar os parâmetros de Start-Process para especificar opções, como carregar um perfil de usuário, iniciar o processo em uma nova janela ou usar credenciais alternativas.
Exemplo 1: Inicie um processo que usa valores padrão.
Esse comando inicia um processo que usa o arquivo Sort. exe na pasta atual. O comando usa todos os valores padrão, incluindo o estilo de janela padrão, pasta de trabalho e credenciais.
Exemplo 2: Imprima um arquivo de texto.
Esse comando inicia um processo que imprime o arquivo C: \ PS-Test \ MyFile. txt.
Exemplo 3: Inicie um processo para classificar itens para um novo arquivo.
Esse comando inicia um processo que classifica itens no arquivo Testsort. txt e retorna os itens ordenados nos arquivos Sorted. txt. Todos os erros são escritos no arquivo SortError. txt.
O parâmetro UseNewEnvironment especifica que o processo é executado com suas próprias variáveis ​​de ambiente.
Exemplo 4: Inicie um processo em uma janela maximizada.
Este comando inicia o processo do bloco de notas. Ele maximiza a janela e retém a janela até que o processo seja concluído.
Exemplo 5: Inicie o Windows Powershell como administrador.
Este comando inicia o Windows PowerShell usando a opção Executar como administrador.
Exemplo 6: Usando verbos diferentes para iniciar um processo.
Esses comandos mostram como encontrar os verbos que podem ser usados ​​ao iniciar um processo e o efeito de usar os verbos para iniciar o processo.
Os verbos disponíveis são determinados pela extensão do nome do arquivo que é executado no processo. Para encontrar os verbos para um processo, crie um objeto System. Diagnostics. ProcessStartInfo para o arquivo de processo e veja na propriedade Verbos do objeto. Este exemplo usa o arquivo PowerShell. exe que é executado no processo PowerShell.
O primeiro comando usa New-Object para criar um objeto System. Diagnostics. ProcessStartInfo para PowerShell. exe, o arquivo que é executado no processo PowerShell. O comando salva o objeto ProcessStartInfo na variável $ startExe.
O segundo comando exibe os valores na propriedade Verbos do objeto ProcessStartInfo na variável $ startExe. Os resultados mostram que você pode usar os verbos Open e Runas com PowerShell. exe ou com qualquer processo que execute um arquivo. exe.
O terceiro comando inicia um processo PowerShell com o verbo Open. O Open verb inicia o processo em uma nova janela de console.
O quarto comando inicia um processo PowerShell com o verbo RunAs. O verbo RunAs inicia o processo com as permissões de um membro do grupo Administradores no computador. Isso é o mesmo que iniciar o Windows PowerShell usando a opção Executar como administrador.
Exemplo 7: Especificando argumentos para o processo.
Ambos os comandos iniciam o interpretador de comandos do Windows, emitindo um comando dir no & # 39; Arquivos de Programas & # 39; pasta. Como este nome da pasta contém um espaço, o valor precisa ser cercado de citações de escape. Observe que o primeiro comando especifica uma seqüência de caracteres como ArgumentList. O segundo comando é uma matriz de string.
Parâmetros necessários.
Especifica o caminho opcional eo nome do arquivo do programa que é executado no processo. Digite o nome de um arquivo executável ou de um documento, como um arquivo. txt ou. doc, que está associado a um programa no computador. Este parâmetro é necessário.
Se você especificar apenas um nome de arquivo, use o parâmetro WorkingDirectory para especificar o caminho.
Parâmetros opcionais.
Especifica parâmetros ou valores de parâmetros a serem usados ​​quando este cmdlet inicia o processo. Se os parâmetros ou os valores dos parâmetros contiverem um espaço, eles precisam ser envolvidos com aspas duvidas.
Especifica uma conta de usuário que possui permissão para executar esta ação. Digite um nome de usuário, como User01 ou Domain01 \ User01, ou insira um objeto PSCredential, como um do cmdlet Get-Credential. Por padrão, o cmdlet usa as credenciais do usuário atual.
Indica que este cmdlet carrega o perfil de usuário do Windows armazenado na chave de registro HKEY_USERS para o usuário atual.
Este parâmetro não afeta os perfis do Windows PowerShell. Para obter mais informações, consulte about_Profiles.
Inicie o novo processo na janela atual do console. Por padrão, o Windows PowerShell abre uma nova janela.
Você não pode usar os parâmetros NoNewWindow e WindowStyle no mesmo comando.
Retorna um objeto de processo para cada processo que o cmdlet começou. Por padrão, este cmdlet não gera nenhuma saída.
Especifica um arquivo. Este cmdlet envia todos os erros gerados pelo processo para um arquivo que você especifica. Digite o caminho e o nome do arquivo. Por padrão, os erros são exibidos no console.
Especifica um arquivo. Este cmdlet lê a entrada do arquivo especificado. Digite o caminho e o nome do arquivo de entrada. Por padrão, o processo obtém sua entrada a partir do teclado.
Especifica um arquivo. Este cmdlet envia a saída gerada pelo processo para um arquivo que você especifica. Digite o caminho e o nome do arquivo. Por padrão, a saída é exibida no console.
Indica que este cmdlet usa novas variáveis ​​de ambiente especificadas para o processo. Por padrão, o processo iniciado é executado com as variáveis ​​de ambiente especificadas para o computador e o usuário.
Especifica um verbo para usar quando este cmdlet inicia o processo. Os verbos disponíveis estão determinados pela extensão do nome do arquivo que é executado no processo.
A tabela a seguir mostra os verbos para alguns tipos comuns de arquivos de processo.
Para encontrar os verbos que podem ser usados ​​com o arquivo executado em um processo, use o cmdlet New-Object para criar um objeto System. Diagnostics. ProcessStartInfo para o arquivo. Os verbos disponíveis estão na propriedade Verbos do objeto ProcessStartInfo. Para detalhes, veja os exemplos.
Indica que este cmdlet espera que o processo especificado seja completado antes de aceitar mais entrada. Esse parâmetro suprime o prompt de comando ou mantém a janela até o processo terminar.
Especifica o estado da janela que é usado para o novo processo. Os valores aceitáveis ​​para este parâmetro são: Normal, Oculto, Minimizado e Maximizado. O valor padrão é Normal.
Você não pode usar os parâmetros WindowStyle e NoNewWindow no mesmo comando.
Especifica a localização do arquivo executável ou documento que é executado no processo. O padrão é a pasta para o novo processo.

Aguarde até que um executável termine.
Uma e outra vez, uma coisa boa com TI é que você tem milhões de maneiras de fazer a mesma coisa. Aquele está bem com o PowerShell também.
Este exemplo é de 3 maneiras de executar um executável e aguardar a conclusão antes de fazer outra coisa. Poderia ser útil para iniciar uma configuração do msi e aguarde antes de sintonizar o software recém-instalado.
Como esse artigo? Compartilhe!
PS Fab: \> Get-RelatedPosts.
Escrito por Fab.
2 Responses to "Wait for a Executable to finish & quot;
Eu não posso encontrar uma boa maneira de fazer isso honestamente, mas eu encontrei uma solução que funciona bem o suficiente para mim:
Armazene um processo do comando Start-Process em uma variável e use um loop para dormir até ele sair, assim:
$ process = Start-Process - Filepath & # 8220; Application. exe & # 8221; - ArgumentList $ psexecArgs - Credential $ MyCredentials - WorkingDirectory & # 8220; C: \ & # 8221; - Passar através.
Usando este método você obtém o benefício do parâmetro - Credential com o Start-Process, mas o script também aguardará o processo que foi lançado. Você deve incluir o parâmetro - PassThru embora para retornar o objeto de processo a ser armazenado na variável.
Eu queria acrescentar, Start-Process - Wait NUNCA funcionou para mim. Seria bom se isso acontecesse.

Processo . Método WaitForExit.
A documentação de referência da API tem uma nova casa. Visite o navegador da API no docs. microsoft para ver a nova experiência.
Define o período de tempo para aguardar o processo associado para sair e bloqueia o segmento de execução atual até o tempo decorrido ou o processo foi encerrado. Para evitar o bloqueio do segmento atual, use o evento Exitado.
Para exemplos de código, consulte as páginas de referência da propriedade StandardError e ExitCode.
Assembly: System (no System. dll)
Instrui o componente Processo a esperar indefinidamente para que o processo associado saia.
Instrui o componente Processo a aguardar o número especificado de milissegundos para que o processo associado saia.

No comments:

Post a Comment