3

Этот вопрос является своего рода разделением между программированием и системным администратором, поэтому здесь идет речь:

У меня есть сценарий PowerShell, который устанавливает зависимости для части программного обеспечения. Одной из этих зависимостей является файл .msu. В моем сценарии я вызываю wusa.exe следующим образом:

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

Я указал переключатель /quiet как он предназначен для автоматической / автоматической установки.

Однако я не могу найти какой-либо способ сказать, когда wusa завершил выполнение, поскольку он работает асинхронно.

Это в любом случае, чтобы указать мой сценарий, когда wusa.exe либо установил исправление и / или прекратил работу?

1 ответ1

2

Несколько возможных решений этого:

Хотя Loops можно использовать для поиска процесса, спите в течение нескольких секунд, а затем продолжайте, когда процесс больше не присутствует:

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

Wait Job можно использовать для запуска задания и ожидания его завершения:

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

Start Process также можно использовать для запуска чего-либо и ожидания его завершения:

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

Надеюсь, один из них поможет вам

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .