Condividi tramite


Get-Process

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

Sintassi

Get-Process [[-Name] <string[]>] [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]

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

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

Descrizione

Con il cmdlet Get-Process vengono ottenuti i processi in un computer locale o remoto.

Senza parametri, Get-Process ottiene tutti i processi nel computer locale. È inoltre possibile specificare un determinato processo per nome o ID processo (PID) oppure passare un oggetto processo attraverso la pipeline a Get-Process.

Per impostazione predefinita, Get-Process restituisce un oggetto processo che presenta informazioni dettagliate sul processo e supporta metodi che consentono l'avvio e l'arresto del processo. È anche possibile utilizzare i parametri di Get-Process per ottenere informazioni sulla versione del file per il programma in esecuzione nel processo e per ottenere i moduli caricati dal processo.

Parametri

-ComputerName <string[]>

Ottiene i processi in esecuzione nei computer specificati. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo 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 Get-Process anche se il computer non è configurato per l'esecuzione di comandi remoti.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-FileVersionInfo

Ottiene le informazioni sulla versione del file per il programma in esecuzione nel processo.

In Windows Vista e nelle versioni successive di Windows per utilizzare questo parametro nei processi di cui non si è il proprietario è necessario aprire Windows PowerShell con l'opzione "Esegui come amministratore".

L'utilizzo 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) e non un oggetto processo. Non è pertanto possibile reindirizzare l'output del comando a un cmdlet che prevede un oggetto processo, ad esempio Stop-Process.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Id <Int32[]>

Specifica uno o più processi per ID processo (PID). Per specificare più ID, separarli tramite virgole. Per trovare il PID di un processo, digitare "get-process".

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-InputObject <Process[]>

Specifica uno o più oggetti processo. Immettere una variabile contenente gli oggetti oppure digitare un comando o un'espressione che consente di ottenere gli oggetti.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-Module

Ottiene i moduli caricati dai processi.

In Windows Vista e nelle versioni successive di Windows per utilizzare questo parametro nei processi di cui non si è il proprietario è necessario aprire Windows PowerShell con l'opzione "Esegui come amministratore".

Questo parametro equivale a ottenere la proprietà Modules di ogni oggetto processo. Quando si utilizza questo parametro, Get-Process restituisce un oggetto ProcessModule (System.Diagnostics.ProcessModule) e non un oggetto processo. Non è pertanto possibile reindirizzare l'output del comando a un cmdlet che prevede un oggetto processo, ad esempio Stop-Process.

Quando si utilizzano entrambi i parametri Module e FileVersionInfo nello stesso comando, Get-Process restituisce un oggetto FileVersionInfo con informazioni sulla versione file di tutti i moduli.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Name <string[]>

Specifica uno o più processi per nome processo. È possibile digitare più nomi di processo, separati da virgole, oppure utilizzare caratteri jolly. Il nome del parametro ("Name") è facoltativo.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

true

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Diagnostics.Process

È possibile reindirizzare un oggetto processo a Get-Process.

Output

System.Diagnostics.Process, System.Diagnotics.FileVersionInfo, System.Diagnostics.ProcessModule

Per impostazione predefinita, Get-Process restituisce un oggetto System.Diagnostics.Process. Se si utilizza il parametro FileVersionInfo, restituisce un oggetto System.Diagnotics.FileVersionInfo. Se si utilizza il parametro Module (senza il parametro FileVersionInfo), restituisce un oggetto System.Diagnostics.ProcessModule.

Note

Non è possibile utilizzare i parametri Name, ID e InputObject nello stesso comando.

È inoltre possibile fare riferimento a Get-Process tramite i relativi alias predefiniti "ps" e "gps". Per ulteriori informazioni, vedere about_Aliases.

È inoltre possibile utilizzare le proprietà e i metodi dell'oggetto WMI Win32_Process in Windows PowerShell. Per informazioni, vedere Get-WmiObject e l'SDK di Strumentazione gestione Windows (WMI).

La visualizzazione predefinita di un processo è una tabella che include le colonne seguenti:

-- Handles: numero di handle aperti dal processo.

-- NPM(K): quantità di memoria non di paging utilizzata dal processo, in kilobyte.

-- PM(K): quantità di memoria paginabile utilizzata dal processo, in kilobyte.

-- WS(K): dimensioni del working set del processo, in kilobyte. Il working set è costituito dalle pagine di memoria a cui ha fatto recentemente riferimento il processo.

-- VM(M): quantità di memoria virtuale utilizzata dal processo, in megabyte. La memoria virtuale include l'archiviazione nei file di paging su disco.

-- CPU: quantità di tempo del processore utilizzata dal processo su 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à.

È inoltre possibile utilizzare le visualizzazioni alternative incorporate dei processi disponibili con Format-Table, ad esempio "StartTime" e "Priority", nonché progettare visualizzazioni personalizzate. Per ulteriori informazioni, vedere Format-Table.

Esempio 1

C:\PS>Get-Process

Descrizione
-----------
Con questo comando viene ottenuto un elenco dei processi in esecuzione nel computer locale. Per la definizione di ogni colonna, vedere la sezione delle note aggiuntive dell'argomento della Guida relativo a Get-Help.





Esempio 2

C:\PS>Get-Process winword, explorer | format-list *

Descrizione
-----------
Con questo comando vengono ottenuti tutti i dati disponibili sui processi di Winword ed Explorer nel computer. Viene utilizzato il parametro Name per specificare i processi ma viene omesso il nome del parametro facoltativo. Con l'operatore pipeline (|) vengono passati i dati al cmdlet Format-List che visualizza tutte le proprietà disponibili (*) degli oggetti processo Winword ed Explorer.

È inoltre possibile identificare i processi tramite il relativo ID. Ad esempio, "get-process -id 664, 2060".





Esempio 3

C:\PS>get-process | where-object {$_.WorkingSet -gt 20000000}

Descrizione
-----------
Con questo comando vengono ottenuti tutti i processi con un working set superiore a 20 MB. Viene utilizzato il cmdlet Get-Process per ottenere tutti i processi in esecuzione. L'operatore pipeline (|) passa gli oggetti processo al cmdlet Where-Object, tramite il quale viene selezionato solo l'oggetto con un valore superiore a 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

C:\PS>$a = get-process

C:\PS> get-process -inputobject $a | format-table -view priority

Descrizione
-----------
Con questi comandi vengono elencati i processi nel computer in gruppi basati sulla loro classe di priorità. 

Mediante il primo comando vengono ottenuti tutti i processi nel computer che vengono quindi archiviati nella variabile $a. 

Nel secondo comando viene utilizzato il parametro InputObject per passare al cmdlet Get-Process gli oggetti di processo archiviati nella variabile $a. Con l'operatore pipeline vengono passati gli oggetti al cmdlet Format-Table che formatta i processi utilizzando la visualizzazione Priority. 

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





Esempio 5

C:\PS>get-process powershell -computername S1, localhost | ft @{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 -ne $()) { $_.CPU.ToString("N")}}}, Id, MachineName, ProcessName -auto


NPM(K) PM(K) WS(K) VM(M) CPU(s)   Id MachineName ProcessName
------ ----- ----- ----- ------   -- ----------- -----------
     6 23500 31340   142        1980 S1          powershell
     6 23500 31348   142        4016 S1          powershell
    27 54572 54520   576        4428 localhost   powershell

Descrizione
-----------
In questo esempio viene fornito un comando Format-Table (alias = ft) che aggiunge la proprietà MachineName alla visualizzazione output Get-Process standard.





Esempio 6

C:\PS>get-process powershell -fileversioninfo

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

Descrizione
-----------
In questo comando viene utilizzato il parametro FileVersionInfo per ottenere informazioni sulla versione del file PowerShell.exe che costituisce il modulo principale del processo PowerShell. 

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





Esempio 7

C:\PS>get-process sql* -module

Descrizione
-----------
In questo comando viene utilizzato il parametro Module per ottenere i moduli caricati dal processo. Con questo comando vengono ottenuti i moduli per i processi i cui nomi iniziano con "sql".

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





Esempio 8

C:\PS>$p = get-wmiobject win32_process -filter "name='powershell.exe'"

C:\PS> $p.getowner()

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

Descrizione
-----------
Con questo comando viene illustrato come trovare il proprietario di un processo. Poiché l'oggetto System.Diagnostics.Process restituito da Get-Process non presenta una proprietà o un metodo che restituisce il proprietario del processo, il comando utilizza
il cmdlet Get-WmiObject per ottenere un oggetto Win32_Process che rappresenta lo stesso processo.

Nel primo comando viene utilizzato Get-WmiObject per ottenere il processo PowerShell. Viene salvato nella variabile $p.

Nel secondo comando viene utilizzato il metodo GetOwner per ottenere il proprietario del processo in $p. Il comando rivela che il proprietario è Domain01\user01.





Esempio 9

C:\PS>get-process powershell

C:\PS> get-process -id $pid

C:\PS> 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


C:\PS> 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

Descrizione
-----------
Con questi comandi viene illustrato come utilizzare la variabile automatica $pid per identificare il processo che ospita la sessione corrente di Windows PowerShell. È possibile utilizzare questo metodo per distinguere il processo host dagli altri processi di PowerShell che può essere opportuno arrestare o chiudere.

Con il primo comando vengono ottenuti tutti i processi PowerShell nella sessione corrente. 

Con il secondo comando viene ottenuto il processo PowerShell che ospita la sessione corrente.





Vedere anche

Concetti

Get-Process
Start-Process
Stop-Process
Wait-Process
Debug-Process