Get-Process

Ottiene i processi in esecuzione nel computer locale o in un computer remoto.

Sintassi

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

Descrizione

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

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 powershell | 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 powershell  12/5/2022 3:21:51 PM
   114  61776 104588 2366127 11.45  18336 powershell  12/5/2022 7:30:53 AM
   156  77924  82060 2366185 10.47  18812 powershell  12/5/2022 7:30:52 AM
    85  48216 115192 2366074 1.14   24428 powershell  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 powershell -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.6713.1       6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

Questo comando usa il parametro FileVersionInfo per ottenere le informazioni sulla versione per il powershell.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     powershell

$p = Get-WmiObject Win32_Process -Filter "name='powershell.exe'"
$p.GetOwner()

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Domain           : DOMAIN01
ReturnValue      : 0
User             : user01

Il primo comando mostra come trovare il proprietario di un processo. Il parametro IncludeUserName richiede diritti utente elevati (Esegui come Amministrazione istrator). L'output rivela che il proprietario è Domain01\user01.

Il secondo e il terzo comando sono un altro modo per trovare il proprietario di un processo.

Il secondo comando usa Get-WmiObject per ottenere il processo di PowerShell. Lo salva nella $p variabile .

Il terzo comando usa il metodo GetOwner per ottenere il proprietario del processo in $p. 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 powershell

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
308      26        52308      61780   567     3.18   5632 powershell
377      26        62676      63384   575     3.88   5888 powershell

Get-Process -Id $PID

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
396      26        56488      57236   575     3.90   5888 powershell

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

-ComputerName

Specifica i computer per i quali questo cmdlet ottiene i processi attivi. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo (FQDN) di uno o più computer. Per specificare il computer locale, digitare il nome del computer, un punto (.) o localhost.

Questo parametro non si basa sulla comunicazione remota di Windows PowerShell. È possibile utilizzare il parametro ComputerName di questo cmdlet anche se il computer non è configurato per l'esecuzione di comandi remoti.

Type:String[]
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:True
Accept wildcard characters:False

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

Non è possibile utilizzare i parametri FileVersionInfo e ComputerName del Get-Process cmdlet nello stesso comando.

Per ottenere informazioni sulla versione dei file per un processo in un computer remoto, usare il Invoke-Command cmdlet .

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.

Type:SwitchParameter
Aliases:FV, FVI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-IncludeUserName

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

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

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

Per ottenere i moduli caricati da un processo in un computer remoto, usare il Invoke-Command cmdlet .

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.

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

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

Windows PowerShell include gli alias seguenti per Get-Process:

  • gps
  • 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.