Preso comandos em Powershell, mas não em Cmd.exe
-
21-12-2019 - |
Pergunta
eu estou enfrentando um problema, o meu script do powershell muito estranho comportement.
Há uma pequena peça de um grande script :
Write-Host "Installation in progress..."
Invoke-Command -Session $session -ThrottleLimit 64 -ScriptBlock {.\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components $using:componentparam /nosql }
Write-Host "Installation completed"
Às vezes, mesmo se a execução de XenDesktopServerSetup.exe
é terminar o meu script não passar para o próximo comando Write-Host "Installation completed"
Eu preciso clicar em algum lugar no shell ou interromper o script com CTRL+C para ver o fim do meu script;
Eu tentei mudar ThrottleLimit
, mas eu não tem efeito.
Eu estou usando o Powershell V4.0.
Há apenas um servidor na Sessão$.
EDITAR : Eu tentei este comando no meu server, eu abri um PS Shell e executado :
.\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components CONTROLLER /nosql
Eu tinha o mesmo problema !
Mas quando eu tentei o mesmo comando em Cmd.exe, ele funciona perfeitamente e sempre !
Como posso executar esse comando no Cmd.exe ?Eu quero algo como isto :
Write-Host "Installation in progress..."
Invoke-Command -Session $session -ThrottleLimit 64 -ScriptBlock {Cmd.exe .\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components $using:componentparam /nosql }
Write-Host "Installation completed"
Isso nos mostra que há uma diferença entre cmd.exe e powershell em como o PS fazer a chamada de .arquivo exe, mas eu não entendo o porque que ele funciona em cmd.exe mas não no powershell
Obrigado por suas sugestões
Solução 2
Isto é como eu resolvido, eu testei um monte e eu não tenho qualquer problema :
Write-Host "Installation in progress..."
Invoke-Command -Session $session -ScriptBlock {$Components = $using:componentparam}
Invoke-Command -Session $session -ScriptBlock {Invoke-Expression "cmd /C '$IsoLetter\x64\XenDesktop Setup\XenDesktopServerSetup.exe' /QUIET /CONFIGURE_FIREWALL /components $Components /nosql" }
Write-Host "Installation completed"
O que você acha?Eu acho que o problema é no .arquivo exe..há algo de errado com.
Mas finalmente eu resolvi usando Invoke-expression
e cmd /C
Outras dicas
Você está certo de que todos os servidores remotos são feitas?Você pode usar o parâmetro AsJob e, em seguida, periodicamente inspeccionar o estado de cada tarefa usando Get-Job.Recuperar a saída com Receive-Job.Você pode mesmo esperar por tudo para terminar com um tempo de espera usando Aguarde-Tarefa $trabalhos -tempo limite de 120