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