Powershell waitforexit não funciona


Powershell waitforexit não funciona
Obter através da App Store Leia esta publicação em nosso aplicativo!
Obtendo ExitCode usando Start-Process e WaitForExit em vez de - Wait.
Estou tentando executar um programa do PowerShell, aguardar a saída, depois ter acesso ao ExitCode, mas não ter muita sorte. Eu não quero usar - Aguarde com o Processo de Início, como eu preciso de algum processamento para continuar em segundo plano.
Aqui está um script de teste simplificado:
A execução deste script fará com que o bloco de notas seja iniciado. Depois disso, é fechado manualmente, o código de saída será impresso, e ele será iniciado de novo, sem usar - wait. Nenhum ExitCode é fornecido quando isso é encerrado:
Eu preciso ser capaz de executar um processamento adicional entre iniciar o programa e aguardá-lo para sair, então eu não posso fazer uso de "Esperar". Alguma idéia de como posso fazer isso e ainda ter acesso à propriedade. ExitCode desse processo?
Duas coisas que você poderia fazer, eu acho.
Crie o objeto System. Diagnostics. Process manualmente e ignore o Start-Process Execute o executável em uma tarefa em segundo plano (apenas para processos não interativos).
Veja como você poderia fazer:
Há duas coisas para lembrar aqui. Um é adicionar o argumento - PassThru e dois é adicionar o argumento - Wait. Você precisa adicionar o argumento de espera por causa desse defeito, connect. microsoft/PowerShell/feedback/details/520554/start-process-does-not-return-exitcode-property.
Depois de fazer isso, um objeto de processo é passado de volta e você pode observar a propriedade ExitCode desse objeto. Aqui está um exemplo:
Se você executá-lo sem - PassThru ou - Wait, ele não imprimirá nada.
Ao tentar a sugestão final acima, descobri uma solução ainda mais simples. Tudo o que eu tinha que fazer era armazenar em cache o identificador do processo. Assim que fiz isso, $ process. ExitCode funcionou corretamente. Se eu não escondeu o process handle, $ process. ExitCode era nulo.
Ou tente adicionar isso.
Ao usar este código, você ainda pode permitir que o PowerShell se ocupe de gerir os fluxos de saída / erro redirecionados, o que você não pode fazer usando System. Diagnostics. Process. Start () diretamente.
A opção '' Esperar 'parecia me bloquear mesmo que meu processo tivesse terminado.
Eu tentei a solução de Adrian e isso funciona. Mas eu usei Wait-Process em vez de confiar em um efeito colateral de recuperar o process handle.

PowerShell.
94 & # 32; пользователя находятся здесь.
МОДЕРАТОРЫ.
Bem-vindo ao Reddit,
a primeira página da internet.
e inscreva-se em uma das milhares de comunidades.
Quer adicionar à discussão?
помощь правила сайта центр поддержки вики реддикет mod guidelines связаться с нами.
приложенияи инструменты Reddit para iPhone Reddit para o site móvel Android кнопки.
Использование данного сайта означает, что вы принимаете & # 32; пользовательского соглашения & # 32; и & # 32; Политика конфиденциальности. &cópia de; 2018 reddit инкорпорейтед. Все права защищены.
REDDIT e o logotipo ALIEN são marcas registradas da reddit inc.
& pi; Renderizado pelo PID 47443 em & # 32; app-379 & # 32; em 2018-01-21 07: 59: 09.805547 + 00: 00 executando o código do país b9fb900: UA.

Start-Process deve suportar o tempo limite # 5185.
Jaykul comentou 20 de outubro de 2017.
[System. Diagnostics. Process] tem um. WaitForExit que possui um valor de tempo limite.
Start-Process deve ter um parâmetro onde podemos passar em vez de precisar de - Passthru e capturar o objeto de processo.
stuajnht comentou 21 de outubro de 2017 e # 8226;
Estou feliz em dar uma olhada neste problema se ninguém mais foi designado, e é algo que é desejado.
Em caso afirmativo, eu tenho algumas perguntas:
Analisando a base de códigos, acredito que o arquivo Process. cs é onde isso deve ser implementado Process. WaitForExit usa milissegundos para o valor de tempo limite. O parâmetro Start-Process também deve esperar milissegundos? O que o parâmetro Start-Process deve chamar? Eu vou assumir - Timeout, embora - WaitTimeout ou - ProcessTimeout também possam ser adequados.
Em resposta às duas últimas questões, agora encontrei o cmdlet Wait-Process que usa um parâmetro - Timeout com segundos (Microsoft Documentation, PowerShell Code). Devo usar essas configurações para consistência.
SteveL-MSFT comentou 22 de outubro de 2017 e # 8226;
@stuajnht Ótimo! Considere o seu! Eu acho que seguir as convenções de Wait-Process faz sentido. Vou atribuir a PowerShellTeam e remover o Up-for-Grabs para que outra pessoa não duplique seu trabalho. Obrigado!
Isso foi referenciado em 13 de novembro de 2017.
Invoke-Command deve ter um parâmetro # 5434.
Processo de início: adicione o parâmetro & # 39; ExitTimeout & # 39; # 5471.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Fóruns de suporte.
Problema com System. Diagnostics. Processe saída redirecionada.
NÃO POSSÍVEL NÚMEROS DE SUBSCRIÇÃO, CHAVES DE LICENÇA OU QUALQUER OUTRA INFORMAÇÃO DE LICENCIAMENTO NESTE FÓRUM.
Somente o autor original e nosso pessoal de tecnologia podem responder a um tópico criado neste fórum. Se você encontrar um tópico relacionado a um problema que está tendo, crie um novo tópico e faça referência ao outro na sua publicação.
Problema com System. Diagnostics. Processe saída redirecionada.
Eu bati minha cabeça um pouco antes de descobrir que o problema só ocorre no Powershell Studio. O código de exemplo a seguir funciona bem em Powershell, ISE, PowerGui, mas não em PSS (Por favor, note que eu precisei mudar MessageData para M_essageData para enviar esta postagem)
Código PowerShell.
Problema com System. Diagnostics. Processe saída redirecionada.
2. Especifique se você está executando uma versão de 32 ou 64 bits.
3. Especifique o seu sistema operacional e se for 32 ou 64 bits.
4. Anexe uma captura de tela se seu problema puder ser visto na tela.
5. Anexe um arquivo zip se você tiver vários arquivos (relatórios de falhas, entradas de log, etc.) relacionados ao seu problema. Caso contrário, tome um momento para editar a sua publicação original ou responder a esta.
Re: Problema com System. Diagnostics. Process redirected outpu.
Código PowerShell.
Por que você apenas chama ping diretamente no PowerShell?
Código PowerShell.
SAPIEN Technologies, Inc.
Re: Problema com System. Diagnostics. Process redirected outpu.
Colocar um ponto de interrupção em 34 dá rendimentos de um conjunto diferente de erros. A depuração parece muito imprevisível. Espero que possamos chegar ao fundo disso.

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.

Комментарии

Популярные сообщения