Condividi tramite


Get-Process

Ottiene i processi in esecuzione nel computer locale.

Sintassi

Name (impostazione predefinita).

Get-Process
    [[-Name] <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

NameWithUserName

Get-Process
    [[-Name] <String[]>]
    -IncludeUserName
    [<CommonParameters>]

Id

Get-Process
    -Id <Int32[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

IdWithUserName

Get-Process
    -Id <Int32[]>
    -IncludeUserName
    [<CommonParameters>]

InputObject

Get-Process
    -InputObject <Process[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

InputObjectWithUserName

Get-Process
    -InputObject <Process[]>
    -IncludeUserName
    [<CommonParameters>]

Descrizione

Il cmdlet Get-Process ottiene i processi in un computer locale.

Senza parametri, questo cmdlet ottiene tutti i processi nel computer locale. È anche possibile specificare un processo specifico in base al nome del processo o all'ID processo (PID) o inviando un piping di un oggetto System.Diagnostics.Process a questo cmdlet.

Per impostazione predefinita, questo cmdlet restituisce un oggetto Process con informazioni dettagliate sul processo e supporta metodi che consentono di controllarlo. Con i parametri, è possibile modificare il tipo di informazioni restituite da questo cmdlet.

  • Modulo: recuperare le informazioni per ogni modulo caricato nel processo.
  • FileVersionInfo: recuperare le informazioni sulla versione del file per il modulo principale del processo.

Annotazioni

Un modulo è un file eseguibile o una DLL (Dynamic Link Library) caricata in un processo. Un processo include uno o più moduli. Il modulo principale è il modulo usato per avviare inizialmente il processo. Per altre informazioni, vedere Classe ProcessModule.

Esempio

Esempio 1: Ottenere un elenco di tutti i processi in esecuzione nel computer locale

Get-Process

Questo comando ottiene un elenco di tutti i processi in esecuzione nel computer locale. Per una definizione di ogni colonna di visualizzazione, vedere la sezione NOTES .

Per visualizzare tutte le proprietà di un oggetto Process , utilizzare Get-Process | Get-Member. Per impostazione predefinita, PowerShell visualizza determinati valori di proprietà usando unità come kilobyte (K) e megabyte (M). I valori effettivi quando si accede con l'operatore di accesso ai membri (.) sono in byte.

Esempio 2: Visualizzare informazioni dettagliate su uno o più processi

Get-Process winword, explorer | Format-List *

Questa pipeline visualizza informazioni dettagliate sui winword processi e explorer nel computer. Usa il parametro Name per specificare i processi, ma omette il nome del parametro facoltativo. L'operatore pipeline (|) invia tramite pipe gli oggetti Process al Format-List cmdlet, che visualizza tutte le proprietà disponibili (*) e i relativi valori per ogni oggetto.

È anche possibile identificare i processi in base ai relativi ID processo. Ad esempio, Get-Process -Id 664, 2060.

Esempio 3: Ottenere tutti i processi con un working set maggiore di una dimensione specificata

Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB

Il Get-Process cmdlet restituisce i processi in esecuzione. L'output viene inviato tramite pipe al Where-Object cmdlet , che seleziona gli oggetti con un valore WorkingSet maggiore di 20.971.520 byte.

Nel primo esempio usa Where-Object un blocco di script per confrontare la proprietà WorkingSet di ogni oggetto Process . Nel secondo esempio il Where-Object cmdlet usa la sintassi semplificata per confrontare la proprietà WorkingSet . In questo caso, -GT è un parametro, non un operatore di confronto. Il secondo esempio usa anche un suffisso letterale numerico come alternativa concisa a 20971520. In PowerShell rappresenta MB un moltiplicatore mebibyte (MiB). 20MB è uguale a 20.971.520 byte.

Esempio 4: Visualizzare i processi nel computer in gruppi in base alla priorità

$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority

Questi comandi visualizzano i processi nel computer in gruppi in base alla relativa classe di priorità. Il primo comando ottiene tutti i processi nel computer e li archivia nella $processes variabile .

Il secondo comando invia tramite pipe gli oggetti Process archiviati nella $processes variabile al Sort-Object cmdlet, quindi al Format-Table cmdlet , che formatta i processi usando la visualizzazione Priorità .

Esempio 5: Aggiungere una proprietà alla visualizzazione predefinita dell'output 'Get-Process'

Get-Process -Name pwsh | Format-Table -Property @(
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(M)';  Expression = { [int] ($_.PM / 1MB) } }
    @{ Name = 'WS(M)';  Expression = { [int] ($_.WS / 1MB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s)   Id SI ProcessName StartTime
------ ----- ----- ------   -- -- ----------- ---------
    84    46    79 18.297 3188  1 pwsh        4/14/2025 10:40:10 AM
    66    30    90 4.328  4640  1 pwsh        4/13/2025 3:33:50 PM
    66    30    90 4.516  9204  1 pwsh        4/14/2025 9:54:27 AM

Questo esempio recupera i processi dal computer locale e invia tramite pipe ogni oggetto Process al Format-Table cmdlet . Format-Table ricrea la visualizzazione di output predefinita di un oggetto Process usando una combinazione di nomi di proprietà e proprietà calcolate. La visualizzazione include una proprietà StartTime aggiuntiva non presente nella visualizzazione predefinita.

Esempio 6: Ottenere informazioni sulla versione per un processo

Get-Process -Name pwsh -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
7.5.0 SHA: 99da… 7.5.0.500        C:\Program Files\PowerShell\7\pwsh.exe

Questo comando usa il parametro FileVersionInfo per ottenere informazioni sulla versione del file per il modulo principale del pwsh processo. Il modulo principale è il file usato per avviare il processo, che in questo caso è pwsh.exe.

Per usare questo comando con processi di cui non si è proprietari in Windows Vista e versioni successive di Windows, è necessario eseguire PowerShell con diritti utente elevati (Esegui come amministratore).

Esempio 7: Ottenere moduli caricati con il processo specificato

Get-Process -Name SQL* -Module

Questo comando usa il parametro Module per ottenere i moduli caricati da tutti i processi con un nome che inizia con SQL.

Per usare questo comando con processi di cui non si è proprietari in Windows Vista e versioni successive di Windows, è necessario eseguire PowerShell con diritti utente elevati (Esegui come amministratore).

Esempio 8: Trovare il proprietario di un processo

Get-Process -Name pwsh -IncludeUserName
WS(M)   CPU(s)      Id UserName                       ProcessName
-----   ------      -- --------                       -----------
46.53    21.70    3188 DOMAIN01\user01                pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

Il primo comando mostra come ottenere il proprietario di un processo. L'output rivela che il proprietario è DOMAIN01\user01.

La seconda pipeline mostra un modo diverso per ottenere il proprietario di un processo usando Get-CimInstance e Invoke-CimMethod. La classe Win32_Process con un filtro recupera i pwsh processi e il metodo richiamato GetOwner() restituisce informazioni sul dominio e sull'utente del processo. Questo metodo è disponibile solo in Windows e non richiede diritti utente elevati.

Esempio 9: Usare una variabile automatica per identificare il processo che ospita la sessione corrente

Get-Process -Name pwsh
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21     105.95       4.33    1192  10 pwsh
    79    83.81     117.61       2.16   10580  10 pwsh
Get-Process -Id $PID
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21      77.53       4.39    1192  10 pwsh

Questi comandi illustrano come usare la variabile automatica $PID per identificare il processo che ospita la sessione di PowerShell corrente. È possibile usare questo metodo per distinguere il processo host da altri pwsh processi che è possibile controllare.

Il primo comando ottiene tutti i pwsh processi in esecuzione. Il secondo comando ottiene il pwsh processo che ospita la sessione corrente.

Esempio 10: Ottenere tutti i processi con un titolo della finestra principale e visualizzarli in una tabella

Get-Process |
    Where-Object -Property MainWindowTitle |
    Format-Table -Property Id, Name, MainWindowTitle -AutoSize

Questa pipeline ottiene tutti i processi con un titolo della finestra principale e li visualizza in una tabella con l'ID e il nome del processo.

MainWindowTitle è una delle numerose proprietà utili del tipo di oggetto Diagnostics.Process restituito Get-Process . Per visualizzare tutte le proprietà, usare Get-Process | Get-Member.

Parametri

-FileVersionInfo

Indica che questo cmdlet ottiene le informazioni sulla versione del file per il programma eseguito nel processo.

In Windows Vista e versioni successive di Windows è necessario eseguire PowerShell con diritti utente elevati (Esegui come amministratore) per usare questo parametro nei processi di cui non si è proprietari.

L'utilizzo di questo parametro equivale all'accesso alla proprietà MainModule.FileVersionInfo di ogni oggetto Process . Quando si utilizza questo parametro, Get-Process restituisce un oggetto FileVersionInfo , non un oggetto Process . Non è possibile inviare tramite pipe l'output generato usando questo parametro a un cmdlet che prevede un oggetto Process , ad esempio Stop-Process.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:False
Supporta i caratteri jolly:False
DontShow:False
Alias:FV, FVI

Set di parametri

Name
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
Id
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
InputObject
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Id

Specifica uno o più processi in base all'ID processo (PID). È possibile specificare più ID separati da virgole. Per ottenere il PID di un processo, usare Get-Process. Per ottenere il PID della sessione di PowerShell corrente, usare $PID.

Proprietà dei parametri

Tipo:

Int32[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:PID

Set di parametri

Id
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False
IdWithUserName
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-IncludeUserName

Indica che questo comando aggiunge una proprietà UserName a ogni oggetto Process restituito.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

NameWithUserName
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
IdWithUserName
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
InputObjectWithUserName
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InputObject

Specifica uno o più oggetti Process . Utilizzare una variabile che contiene gli oggetti o un comando o un'espressione che ottiene gli oggetti .

Proprietà dei parametri

Tipo:

Process[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

InputObject
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
InputObjectWithUserName
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Module

Indica che questo cmdlet ottiene i moduli caricati dal processo.

In Windows Vista e versioni successive di Windows è necessario eseguire PowerShell con diritti utente elevati (Esegui come amministratore) per usare questo parametro nei processi di cui non si è proprietari.

L'utilizzo di questo parametro equivale all'accesso alla proprietà Modules di ogni oggetto Process . Quando si utilizza questo parametro, Get-Processrestituisce un oggetto ProcessModule , non un oggetto Process . Non è possibile inviare tramite pipe l'output generato usando questo parametro a un cmdlet che prevede un oggetto Process , ad esempio Stop-Process.

Quando si usano entrambi i parametri Module e FileVersionInfo , questo cmdlet restituisce un oggetto FileVersionInfo con informazioni sulla versione del file di tutti i moduli.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:False
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

Name
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
Id
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False
InputObject
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Name

Specifica uno o più processi in base al nome del processo. È possibile specificare più nomi di processo separati da virgole e usare caratteri jolly. L'uso del -Name parametro è facoltativo.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:True
DontShow:False
Alias:ProcessName

Set di parametri

Name
Posizione:0
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False
NameWithUserName
Posizione:0
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

Process

È possibile inviare tramite pipe oggetti Process a questo cmdlet.

Output

Process

Per impostazione predefinita, questo cmdlet restituisce un oggetto System.Diagnostics.Process.

FileVersionInfo

Se si utilizza il parametro FileVersionInfo , questo cmdlet restituisce un oggetto System.Diagnostics.FileVersionInfo .

ProcessModule

Se si utilizza il parametro Module , senza il parametro FileVersionInfo , questo cmdlet restituisce un oggetto System.Diagnostics.ProcessModule .

Note

PowerShell include gli alias seguenti per Get-Process:

  • Tutte le piattaforme:
    • gps
  • Windows:
    • ps

Nei computer che eseguono Windows a 64 bit, la versione a 64 bit di PowerShell ottiene il modulo principale e i moduli di processo a 64 bit. La versione a 32 bit di PowerShell ottiene solo moduli di elaborazione a 32 bit.

Avvertimento

Quando si usa Get-Process per ottenere un processo a 64 bit nella versione a 32 bit di PowerShell, le proprietà come Path e MainModule dell'oggetto Process restituito sono $null. È necessario usare la versione a 64 bit di PowerShell o la classe Win32_Process .

Per ottenere informazioni sul processo da un computer remoto, usare il cmdlet Invoke-Command. Per altre informazioni, vedere Invoke-Command.

In Windows è possibile usare la classe strumentazione gestione Windows (WMI) Win32_Process in PowerShell come alternativa a Get-Process. Per altre informazioni, vedere:

La visualizzazione predefinita di un oggetto Process è una vista tabella che include le colonne seguenti.

  • NPM(K): quantità di memoria non di paging usata dal processo, espressa in kilobyte.
  • PM(M): quantità di memoria pageable usata dal processo, in megabyte.
  • WS(M): dimensioni del working set del processo, in megabyte. Il working set è costituito dalle pagine di memoria a cui fa riferimento di recente il processo.
  • CPU o CPU: quantità di tempo del processore usata dal processo in tutti i processori, in secondi.
  • ID: ID processo (PID) del processo.
  • SI: ID sessione del processo.
  • ProcessName: nome del processo.

È possibile usare le visualizzazioni alternative predefinite per gli oggetti Process disponibili con Format-Table, ad esempio StartTime e Priority. È anche possibile progettare visualizzazioni personalizzate.

Per una descrizione di tutti i membri dell'oggetto Process disponibili, vedere Process Properties and Process Methods.For a description of all available Process object members, see Process Properties and Process Methods.