Como saber quando o wusa.exe terminou a execução?

2

Esta questão é dividida entre programação e sysadmin, então aqui vai:

Eu tenho um script do PowerShell que instala dependências para um software. Uma dessas dependências é um arquivo .msu. No meu script, eu invoco wusa.exe como tal:

"wusa.exe $DownloadDir\Windows6.1-KB2506143-x64.msu /quiet /norestart"

Eu especifiquei a opção /quiet , pois essa é uma instalação silenciosa / autônoma.

No entanto, não consigo encontrar uma maneira de saber quando o wusa terminou a execução, pois parece estar em execução de forma assíncrona.

É assim mesmo para dar uma indicação ao meu script quando o wusa.exe já instalou o hotfix e / ou terminou?

    
por Jake 02.10.2015 / 16:39

1 resposta

1

Várias soluções possíveis para isso:

While Loops pode ser usado como uma forma de procurar um processo, dormir por alguns segundos e depois continuar quando um processo não estiver mais presente:

Do {
    sleep 2
    $instanceCount = (Get-Process | Where { $_.Name -eq "notepad" } | Measure-Object).Count
} while ($instanceCount -gt 0)

Wait Job pode ser usado para iniciar um trabalho e aguardar a conclusão de um trabalho:

$myJob = Start-Job -Name "MyJobName" -ScriptBlock { 
    #Do Something
 }
Wait-Job -Job $myJob 

Iniciar processo também pode ser usado para iniciar algo e aguardar a conclusão:

Start-Process "C:\mything.exe arg1=something arg2=somethingelse" -NoNewWindow -Wait

Espero que um deles ajude você

    
por 09.03.2016 / 17:18