Wait-Process
Attende l'arresto dei processi prima di accettare altri input.
Sintassi
Wait-Process
[-Name] <String[]>
[[-Timeout] <Int32>]
[<CommonParameters>]
Wait-Process
[-Id] <Int32[]>
[[-Timeout] <Int32>]
[<CommonParameters>]
Wait-Process
[[-Timeout] <Int32>]
-InputObject <Process[]>
[<CommonParameters>]
Descrizione
Il Wait-Process
cmdlet attende che uno o più processi in esecuzione vengano arrestati prima di accettare l'input. Nella console di PowerShell questo cmdlet elimina il prompt dei comandi fino a quando i processi non vengono arrestati. È possibile specificare un processo in base al nome del processo o all'ID processo (PID) o inviare tramite pipe un oggetto processo a Wait-Process
.
Wait-Process
funziona solo nei processi in esecuzione nel computer locale.
Esempio
Esempio 1: Arrestare un processo e attendere
PS C:\> $nid = (Get-Process notepad).id
PS C:\> Stop-Process -Id $nid
PS C:\> Wait-Process -Id $nid
Questo esempio arresta il processo blocco note e quindi attende che il processo venga arrestato prima che continui con il comando successivo.
Il primo comando usa il Get-Process
cmdlet per ottenere l'ID del processo del Blocco note. Archivia l'ID nella $nid
variabile .
Il secondo comando usa il Stop-Process
cmdlet per arrestare il processo con l'ID archiviato in $nid
.
Il terzo comando usa Wait-Process
per attendere che il processo del Blocco note venga arrestato. Usa il parametro Id di Wait-Process
per identificare il processo.
Esempio 2: Specifica di un processo
PS C:\> $p = Get-Process notepad
PS C:\> Wait-Process -Id $p.id
PS C:\> Wait-Process -Name "notepad"
PS C:\> Wait-Process -InputObject $p
Questi comandi mostrano tre metodi diversi per specificare un processo per Wait-Process
. Il primo comando ottiene il processo del Blocco note e lo archivia nella $p
variabile .
Il secondo comando usa il parametro Id , il terzo comando usa il parametro Name e il quarto comando usa il parametro InputObject .
Questi comandi restituiscono gli stessi risultati e possono essere usati in modo interscambiabile.
Esempio 3: Attendere i processi per un periodo di tempo specificato
PS C:\> Wait-Process -Name outlook, winword -Timeout 30
Questo comando attende per 30 secondi l'arresto dei processi Outlook e Winword. Se entrambi i processi non vengono arrestati, il cmdlet visualizza un errore non irreversibile e il prompt dei comandi.
Parametri
-Id
Specifica gli ID processo dei processi. Per specificare più ID, separarli con la virgola.
Per trovare il PID di un processo, digitare Get-Process
.
Tipo: | Int32[] |
Alias: | PID, ProcessId |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-InputObject
Specifica i processi inviando oggetti processo. Immettere una variabile contenente gli oggetti processo oppure digitare un comando o un'espressione che ottiene gli oggetti processo, ad esempio il Get-Process
cmdlet .
Tipo: | Process[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Name
Specifica i nomi di processo dei processi. Per specificare più nomi, separarli con la virgola. I caratteri jolly non sono supportati.
Tipo: | String[] |
Alias: | ProcessName |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Timeout
Specifica il tempo massimo, espresso in secondi, in cui il cmdlet attende l'arresto dei processi specificati. Alla scadenza di questo intervallo, il comando visualizzo un errore non irreversibile in cui sono elencati i processi ancora in esecuzione e termina l'attesa. Per impostazione predefinita, non è previsto alcun timeout.
Tipo: | Int32 |
Alias: | TimeoutSec |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
None
Questo cmdlet non restituisce output.
Note
Questo cmdlet usa il metodo WaitForExit della classe System.Diagnostics.Process .
A differenza di
Start-Process -Wait
,Wait-Process
attende solo i processi identificati.Start-Process -Wait
attende che l'albero del processo (il processo e tutti i relativi discendenti) venga chiuso prima di restituire il controllo.