Condividi tramite


Get-Process

Ottiene i processi in esecuzione nel computer locale.

Sintassi

Get-Process
   [[-Name] <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   [[-Name] <String[]>]
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   -IncludeUserName
   [<CommonParameters>]

Descrizione

Il Get-Process cmdlet 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 passare un oggetto processo tramite la pipeline a questo cmdlet.

Per impostazione predefinita, questo cmdlet restituisce un oggetto processo con informazioni dettagliate sul processo e supporta metodi che consentono di avviare e arrestare il processo. È anche possibile usare i parametri del Get-Process cmdlet per ottenere informazioni sulla versione dei file per il programma eseguito nel processo e per ottenere i moduli caricati dal processo.

Esempio

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

Get-Process

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

Esempio 2: Ottenere tutti i dati disponibili su uno o più processi

Get-Process winword, explorer | Format-List *

Questo comando ottiene tutti i dati disponibili sui processi di Winword ed Explorer nel computer. Usa il parametro Name per specificare i processi, ma omette il nome del parametro facoltativo. L'operatore pipeline (|) passa i dati al Format-List cmdlet , che visualizza tutte le proprietà disponibili (*) degli oggetti processo Winword e Explorer.

È inoltre possibile identificare i processi tramite il relativo ID, 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 20000000}

Questo comando ottiene tutti i processi con un working set superiore a 20 MB. Usa il Get-Process cmdlet per ottenere tutti i processi in esecuzione. L'operatore pipeline (|) passa gli oggetti processo al Where-Object cmdlet , che seleziona solo l'oggetto con un valore maggiore di 20.000.000 byte per la proprietà WorkingSet .

WorkingSet è una delle numerose proprietà degli oggetti processo. Per visualizzare tutte le proprietà, digitare Get-Process | Get-Member. Per impostazione predefinita, i valori di tutte le proprietà di quantità sono espressi in byte, anche se nella visualizzazione predefinita sono elencati in kilobyte e megabyte.

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

$A = Get-Process
$A | Get-Process | Format-Table -View priority

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

Il secondo comando invia tramite pipe l'oggetto Process archiviato nella $A variabile al Get-Process cmdlet , quindi al Format-Table cmdlet , che formatta i processi usando la visualizzazione Priorità .

La visualizzazione Priorità e altre visualizzazioni sono definite nei file di formato PS1XML nella home directory di PowerShell ($pshome).

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

Get-Process pwsh | Format-Table `
    @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
    @{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
    @{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
    @{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
    @{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
    Id, ProcessName, StartTime -AutoSize

NPM(K)  PM(K)  WS(K)   VM(M) CPU(s)    Id ProcessName StartTime
------  -----  -----   ----- ------    -- ----------- ---------
   143 239540 259384 2366162 22.73  12720 pwsh        12/5/2022 3:21:51 PM
   114  61776 104588 2366127 11.45  18336 pwsh        12/5/2022 7:30:53 AM
   156  77924  82060 2366185 10.47  18812 pwsh        12/5/2022 7:30:52 AM
    85  48216 115192 2366074 1.14   24428 pwsh        12/8/2022 9:14:15 AM

In questo esempio vengono recuperati i processi dal computer locale. I processi recuperati vengono inviati tramite pipe al Format-Table comando che aggiunge la proprietà StartTime alla visualizzazione dell'output standard Get-Process .

Esempio 6: Ottenere informazioni sulla versione per un processo

Get-Process pwsh -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.2            6.1.2            C:\Program Files\PowerShell\6\pwsh.exe

Questo comando usa il parametro FileVersionInfo per ottenere le informazioni sulla versione per il pwsh.exe file che rappresenta il modulo principale per il processo di PowerShell.

Per eseguire questo comando con processi di cui non si è proprietari in Windows Vista e versioni successive di Windows, è necessario aprire PowerShell con l'opzione Esegui come amministratore .

Esempio 7: Ottenere moduli caricati con il processo specificato

Get-Process SQL* -Module

Questo comando usa il parametro Module per ottenere i moduli caricati dal processo. Questo comando ottiene i moduli per i processi con nomi che iniziano con SQL.

Per eseguire questo comando in Windows Vista e versioni successive di Windows con processi di cui non si è proprietari, è necessario avviare PowerShell con l'opzione Esegui come amministratore .

Esempio 8: Trovare il proprietario di un processo

Get-Process pwsh -IncludeUserName

Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     pwsh

Questo comando mostra come trovare il proprietario di un processo. In Windows il parametro IncludeUserName richiede diritti utente elevati (Esegui come amministratore). L'output rivela che il proprietario è Domain01\user01.

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

Get-Process 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 $PID variabile automatica per identificare il processo che ospita la sessione corrente di PowerShell. È possibile usare questo metodo per distinguere il processo host da altri processi di PowerShell che è possibile arrestare o chiudere.

Il primo comando ottiene tutti i processi di PowerShell nella sessione corrente.

Il secondo comando ottiene il processo di PowerShell 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 {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize

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

La proprietà mainWindowTitle è solo una delle numerose proprietà utili dell'oggetto Process che Get-Process restituisce. Per visualizzare tutte le proprietà, inviare tramite pipe i risultati di un Get-Process comando al Get-Member cmdlet 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 aprire PowerShell con l'opzione Esegui come amministratore per usare questo parametro nei processi di cui non si è proprietari.

L'uso di questo parametro equivale a ottenere la proprietà MainModule.FileVersionInfo di ogni oggetto processo. Quando si utilizza questo parametro, Get-Process restituisce un oggetto FileVersionInfo System.Diagnostics.FileVersionInfo, non un oggetto process. Non è quindi possibile inviare tramite pipe l'output del comando a un cmdlet che prevede un oggetto processo, ad esempio Stop-Process.

Tipo:SwitchParameter
Alias:FV, FVI
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Id

Specifica uno o più processi mediante l'ID processo (PID). Per specificare più ID, separarli con la virgola. Per trovare il PID di un processo, digitare Get-Process.

Tipo:Int32[]
Alias:PID
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-IncludeUserName

Indica che il valore UserName dell'oggetto Process viene restituito con i risultati del comando.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InputObject

Specifica uno o più oggetti processo. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti.

Tipo:Process[]
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Module

Indica che questo cmdlet ottiene i moduli caricati dai processi.

In Windows Vista e versioni successive di Windows è necessario aprire PowerShell con l'opzione Esegui come amministratore per usare questo parametro nei processi di cui non si è proprietari.

Questo parametro equivale a ottenere la proprietà Modules di ogni oggetto processo. Quando si usa questo parametro, questo cmdlet restituisce un oggetto ProcessModule System.Diagnostics.ProcessModule, non un oggetto processo. Non è quindi possibile inviare tramite pipe l'output del comando a un cmdlet che prevede un oggetto processo, ad esempio Stop-Process.

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

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Name

Specifica uno o più processi mediante il nome del processo. È possibile digitare più nomi di processo, separati da virgole, e usare caratteri jolly. Il nome del parametro (Name) è facoltativo.

Tipo:String[]
Alias:ProcessName
Posizione:0
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:True

Input

Process

È possibile inviare tramite pipe un oggetto processo 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 FileVersionInfo .

ProcessModule

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

Note

PowerShell include gli alias seguenti per Get-Process:

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

Nei computer che eseguono una versione a 64 bit di Windows, la versione a 64 bit di PowerShell ottiene solo moduli di elaborazione a 64 bit e la versione a 32 bit di PowerShell ottiene solo moduli di processo a 32 bit.

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

È possibile usare le proprietà e i metodi dell'oggetto Strumentazione gestione Windows (WMI) Win32_Process in PowerShell. Per informazioni, vedere Win32_Process.

La visualizzazione predefinita di un processo è una tabella che include le colonne seguenti. Per una descrizione di tutte le proprietà degli oggetti processo, vedere Proprietà processo.

  • Handle: numero di handle aperti dal processo.
  • NPM(K): quantità di memoria non di paging usata dal processo, espressa in kilobyte.
  • PM(K): quantità di memoria pageable usata dal processo, espressa in kilobyte.
  • WS(K): dimensioni del working set del processo, espresso in kilobyte. Il working set è costituito dalle pagine di memoria a cui ha fatto recentemente riferimento il processo.
  • VM(M): quantità di memoria virtuale usata dal processo, in megabyte. La memoria virtuale include l'archiviazione nei file di paging su disco.
  • CPU(s): quantità di tempo del processore usata dal processo in tutti i processori, in secondi.
  • ID: ID processo (PID) del processo.
  • ProcessName: nome del processo. Per una spiegazione dei concetti relativi ai processi, consultare il Glossario in Guida e supporto tecnico e la Guida di Gestione attività.

È anche possibile usare le visualizzazioni alternative predefinite dei processi disponibili con Format-Table, ad esempio StartTime e Priority, ed è possibile progettare visualizzazioni personalizzate.