Поиск по сайту:

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 ожидает выхода дерева процессов (процесса и всех его потомков), прежде чем вернуть управление.