Wait-Process

Czeka na zatrzymanie procesów przed zaakceptowaniem większej liczby danych wejściowych.

Składnia

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>]

Opis

To polecenie cmdlet nie działa w systemie Linux lub macOS.

Polecenie Wait-Process cmdlet czeka na zatrzymanie co najmniej jednego uruchomionego procesu przed zaakceptowaniem danych wejściowych. W konsoli programu PowerShell to polecenie cmdlet pomija wiersz polecenia do momentu zatrzymania procesów. Proces można określić według nazwy procesu lub identyfikatora procesu (PID) lub potoku obiektu procesu do Wait-Process.

Wait-Process działa tylko w przypadku procesów uruchomionych na komputerze lokalnym.

Przykłady

Przykład 1: Zatrzymywanie procesu i oczekiwanie

Ten przykład zatrzymuje proces Notatnik, a następnie czeka na zatrzymanie procesu przed kontynuowaniem przy użyciu następnego polecenia.

$nid = (Get-Process notepad).id
Stop-Process -Id $nid
Wait-Process -Id $nid

Polecenie Get-Process cmdlet pobiera identyfikator procesu Notatnik procesu i zapisuje go w zmiennej$nid. Stop-Process zatrzymuje proces z identyfikatorem przechowywanym w $nidpliku . Wait-Processczeka na zatrzymanie procesu Notatnik.

Przykład 2. Określanie procesu

W tym przykładzie przedstawiono trzy różne metody określania procesu na Wait-Process. Pierwsze polecenie pobiera proces Notatnik i przechowuje go w zmiennej$p. Drugie polecenie używa parametru Id , trzecie polecenie używa parametru Name , a czwarte polecenie używa parametru InputObject .

$p = Get-Process notepad
Wait-Process -Id $p.id
Wait-Process -Name "notepad"
Wait-Process -InputObject $p

Te polecenia mają te same wyniki i mogą być używane zamiennie.

Przykład 3. Oczekiwanie na procesy przez określony czas

W tym przykładzie Wait-Process poczeka 30 sekund na zatrzymanie procesów programu Outlook i Winword . Jeśli oba procesy nie zostaną zatrzymane, polecenie cmdlet wyświetli błąd niepowodujący zakończenia i wiersz polecenia.

Wait-Process -Name outlook, winword -Timeout 30

Parametry

-Any

Gdy wiele procesów jest przekazywanych do Wait-Processprogramu , polecenie cmdlet czeka na zakończenie wszystkich procesów przed zwróceniem. Za pomocą tego parametru polecenie cmdlet zwraca polecenie cmdlet, gdy którykolwiek z procesów zakończy działanie. Pozostałe procesy będą nadal działać.

Ten parametr został dodany w programie PowerShell 7.4.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Określa identyfikatory procesów procesów. Aby określić wiele identyfikatorów, użyj przecinków, aby oddzielić identyfikatory. Aby znaleźć identyfikator PID procesu, wpisz Get-Process.

Type:Int32[]
Aliases:PID, ProcessId
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

Określa procesy, przesyłając obiekty procesu. Wprowadź zmienną zawierającą obiekty procesu lub wpisz polecenie lub wyrażenie, które pobiera obiekty procesu, takie jak Get-Process polecenie cmdlet.

Type:Process[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Określa nazwy procesów. Aby określić wiele nazw, użyj przecinków, aby oddzielić nazwy. Symbole wieloznaczne nie są obsługiwane.

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych. Za pomocą tego parametru polecenie cmdlet zwraca obiekty reprezentujące procesy, które zostały zaczekane.

Ten parametr został dodany w programie PowerShell 7.4.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

Określa maksymalny czas (w sekundach), który to polecenie cmdlet oczekuje na zatrzymanie określonych procesów. Po wygaśnięciu tego interwału polecenie wyświetla błąd bez zakończenia, który wyświetla listę procesów, które są nadal uruchomione, i kończy oczekiwanie. Domyślnie nie ma limitu czasu.

Type:Int32
Aliases:TimeoutSec
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

Process

Do tego polecenia cmdlet można przekazać obiekt procesu.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

Process

Polecenie cmdlet zwraca obiekty procesu podczas korzystania z parametru PassThru .

Uwagi

  • To polecenie cmdlet używa metody WaitForExit klasy System.Diagnostics.Process.

  • W przeciwieństwie do Start-Process -Waitmetody , Wait-Process oczekuje tylko na zidentyfikowane procesy. Start-Process -Wait czeka na drzewo procesów (proces i wszystkie jego elementy potomne) do zakończenia przed zwróceniem kontrolki.