Wait-Process (Microsoft.PowerShell.Management)
Wait-Process
- Модуль:
- Microsoft.PowerShell.Management
Ожидает остановки процессов, прежде чем принимать дальнейшие входные данные.
Синтаксис
Wait-Process
[-Name] <String[]>
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
[<CommonParameters>]Wait-Process
[-Id] <Int32[]>
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
[<CommonParameters>]Wait-Process
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
-InputObject <Process[]>
[<CommonParameters>]Описание
Этот командлет не работает в Linux и macOS.
Командлет Wait-Process ожидает остановки одного или нескольких запущенных процессов, прежде чем принять входные данные. В консоли PowerShell этот командлет подавляет командную строку до тех пор, пока процессы не будут остановлены. Вы можете указать процесс по имени процесса или идентификатору процесса (PID) или передать объект процесса в Wait-Process.
Wait-Process работает только с процессами, запущенными на локальном компьютере.
Примеры
Пример 1. Остановите процесс и подождите.
В этом примере останавливается процесс Блокнот, а затем он ожидает остановки процесса, прежде чем продолжить выполнение следующей команды.
$nid = (Get-Process notepad).id
Stop-Process -Id $nid
Wait-Process -Id $nidКомандлет Get-Process получает идентификатор процесса Notepad и сохраняет его в переменной $nid. Stop-Process останавливает процесс с идентификатором, хранящимся в $nid. Wait-Process ожидает остановки процесса Блокнот.
Пример 2: Указание процесса
В этом примере показаны три различных метода указания процесса Wait-Process. Первая команда получает процесс «Блокнот» и сохраняет его в переменной $p. Вторая команда использует параметр Id, третья команда использует параметр Name, а четвертая команда использует параметр InputObject.
$p = Get-Process notepad
Wait-Process -Id $p.id
Wait-Process -Name "notepad"
Wait-Process -InputObject $pЭти команды дают одинаковые результаты и могут использоваться взаимозаменяемо.
Пример 3: Ожидание процессов в течение указанного времени
В этом примере Wait-Process ожидает остановки процессов Outlook и Winword в течение 30 секунд. Если оба процесса не остановлены, командлет отображает непрерывную ошибку и командную строку.
Wait-Process -Name outlook, winword -Timeout 30Параметры
-Any
Когда в Wait-Process передается несколько процессов, командлет ожидает завершения всех процессов перед возвратом. С этим параметром командлет завершает работу при завершении любого из процессов. Остальные процессы продолжают выполняться.
Этот параметр был добавлен в PowerShell 7.4.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Id
Указывает идентификаторы процессов. Чтобы указать несколько идентификаторов, разделяйте их запятыми. Чтобы узнать PID процесса, введите Get-Process.
- Тип :
Int32[]
- Псевдонимы:
PID, ProcessId
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-InputObject
Указывает процессы, отправляя объекты процессов. Введите переменную, содержащую объекты процесса, или введите команду или выражение, которое получает объекты процесса, например командлет Get-Process.
- Тип :
Процесс[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Name
Указывает имена процессов. Чтобы указать несколько имен, разделяйте их запятыми. Подстановочные знаки не поддерживаются.
- Тип :
String[]
- Псевдонимы:
ProcessName
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-PassThru
По умолчанию этот командлет ничего не выводит. С помощью этого параметра командлет возвращает объекты, представляющие процессы, которые ожидались.
Этот параметр был добавлен в PowerShell 7.4.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Timeout
Указывает максимальное время в секундах, в течение которого этот командлет ожидает остановки указанных процессов. По истечении этого интервала команда отображает непрерывную ошибку, в которой перечислены процессы, которые все еще выполняются, и завершает ожидание. По умолчанию тайм-аут отсутствует.
- Тип :
Int32
- Псевдонимы:
TimeoutSec
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Процесс
Вы можете передать объект процесса этому командлету.
Выходы
Нет
По умолчанию этот командлет не возвращает никаких результатов.
Процесс
Командлет возвращает объекты процесса при использовании параметра PassThru.
Примечания
Этот командлет использует метод WaitForExit класса System.Diagnostics.Process.
В отличие от
Start-Process -Wait,Wait-Processожидает только идентифицированные процессы.Start-Process -Waitожидает выхода дерева процессов (процесса и всех его потомков), прежде чем вернуть управление.