Share via


Wait-Process

Attende l'arresto dei processi prima di accettare altri input.

Sintassi

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

Descrizione

Questo cmdlet non funziona in Linux o macOS.

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

Questo esempio arresta il processo Blocco note e quindi attende che il processo venga arrestato prima che continui con il comando successivo.

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

Il Get-Process cmdlet ottiene l'ID processo del processo Blocco note e lo archivia nella $nid variabile . Stop-Process arresta il processo con l'ID archiviato in $nid. Wait-Processattende fino a quando il processo di Blocco note non viene arrestato.

Esempio 2: Specifica di un processo

In questo esempio vengono illustrati tre metodi diversi per specificare un processo in Wait-Process. Il primo comando ottiene il processo di 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 .

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

Questi comandi restituiscono gli stessi risultati e possono essere usati in modo interscambiabile.

Esempio 3: Attendere i processi per un periodo di tempo specificato

In questo esempio attende Wait-Process l'arresto dei processi outlook e Winword di 30 secondi. Se entrambi i processi non vengono arrestati, il cmdlet visualizza un errore non irreversibile e il prompt dei comandi.

Wait-Process -Name outlook, winword -Timeout 30

Parametri

-Any

Quando vengono passati più processi in Wait-Process, il cmdlet attende l'uscita di tutti i processi prima della restituzione. Con questo parametro, il cmdlet restituisce quando uno dei processi viene chiuso. I processi rimanenti continuano a essere eseguiti.

Questo parametro è stato aggiunto in PowerShell 7.4.

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

-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 Get-Process cmdlet .

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

-PassThru

Per impostazione predefinita, questo cmdlet non restituisce alcun risultato. Con questo parametro, il cmdlet restituisce oggetti che rappresentano i processi in attesa.

Questo parametro è stato aggiunto in PowerShell 7.4.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
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

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

Process

Il cmdlet restituisce oggetti processo quando si utilizza il parametro PassThru .

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.