Condividi tramite


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 cmdlet Wait-Process attende che uno o più processi in esecuzione vengano arrestati prima di accettare l'input. Nella console di Windows PowerShell questo cmdlet elimina il prompt dei comandi finché i processi non vengono arrestati. È possibile specificare un processo in base al nome del processo o all'ID processo (PID) oppure inviare tramite pipe un oggetto processo a Wait-Process.

Wait-Process funziona solo sui 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 attende che il processo venga arrestato prima che continui con il comando successivo.

Il primo comando usa il cmdlet Get-Process per ottenere l'ID del processo del Blocco note. Archivia l'ID nella variabile $nid.

Il secondo comando usa il cmdlet Stop-Process per arrestare il processo con l'ID archiviato in $nid.

Il terzo comando usa Wait-Process per attendere l'arresto del processo del Blocco note. 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 diversi metodi per specificare un processo per Wait-Process. Il primo comando ottiene il processo del Blocco note e lo archivia nella variabile $p.

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.

Type:Int32[]
Aliases:PID, ProcessId
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 cmdlet Get-Process.

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

-Name

Specifica i nomi di processo dei processi. Per specificare più nomi, separarli con la virgola. I caratteri jolly non sono supportati.

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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

Input

Process

È possibile inviare tramite pipe un oggetto processo a questo cmdlet.

Output

None

Questo cmdlet non genera alcun output.

Note

  • Questo cmdlet usa il metodo WaitForExit della classe System.Diagnostics.Process. Per altre informazioni su questo metodo, vedere Microsoft .NET Framework SDK.