Если вы хотите продолжить работу до завершения $batFile
, ваше предложение while
недопустимо в PowerShell. Здесь вам нужно будет внести два изменения.
Во-первых, вам нужно запустить $batFile
с Start-Process
, чтобы вы могли получить PID для ожидания:
# -PassThru is required because by default Start-Process doesn't return an object
$processId = ( Start-Process -FilePath $batFile -PassThru ).Id
Тогда для вашего while
предложения:
} while ( Get-Process -Id $processId 2>$null )
Это будет поддерживать работу вашего l oop до тех пор, пока не завершится процесс, принадлежащий $batFile
. 2>$null
перенаправляет поток ошибок на $null
, поэтому он не будет отображать ошибку, когда процесс больше не будет найден.
Подробнее о выходных потоках и перенаправлении можно узнать на my ответ здесь .