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 amministratore). 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.
Tipo: | String[] |
Alias: | Cn |
Posizione: | Named |
Valore predefinito: | Local computer |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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
.
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.
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.
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
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
Per impostazione predefinita, questo cmdlet restituisce un oggetto System.Diagnostics.Process .
Se si utilizza il parametro FileVersionInfo , questo cmdlet restituisce un oggetto FileVersionInfo .
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.