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 del 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 ed 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 di output standard Get-Process
Get-Process powershell -ComputerName S1, localhost | 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, MachineName, ProcessName -AutoSize
NPM(K) PM(K) WS(K) VM(M) CPU(s) Id MachineName ProcessName
------ ----- ----- ----- ------ -- ----------- -----------
6 23500 31340 142 1.70 1980 S1 powershell
6 23500 31348 142 2.75 4016 S1 powershell
27 54572 54520 576 5.52 4428 localhost powershell
Questo esempio recupera i processi dal computer locale e da un computer remoto (S1).
I processi recuperati vengono inviati tramite pipe al Format-Table
comando che aggiunge la proprietà MachineName 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 file powershell.exe che è il modulo principale per il processo di PowerShell.
Per eseguire questo comando con processi non di proprietà 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
PS C:\> Get-Process powershell -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.
quindi lo salva nella variabile $p.
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 eseguire 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'utilizzo di questo parametro equivale a ottenere la proprietà MainModule.FileVersionInfo di ogni oggetto processo.
Quando si usa questo parametro, Get-Process
restituisce un oggetto FileVersionInfoSystem.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 ProcessModuleSystem.Diagnostics.ProcessModule, 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
.
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
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule
Per impostazione predefinita, questo cmdlet restituisce un oggetto System.Diagnostics.Process . Se si utilizza il parametro FileVersionInfo , restituisce un oggetto System.Diagnostics.FileVersionInfo . Se si utilizza il parametro Module , senza il parametro FileVersionInfo , viene restituito un oggetto System.Diagnostics.ProcessModule .
Note
- È anche possibile fare riferimento a questo cmdlet in base agli alias predefiniti, ps e gps. Per altre informazioni, vedere about_Aliases.
- 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.
- È possibile usare le proprietà e i metodi dell'oggetto Strumentazione gestione Windows (WMI) Win32_Process in PowerShell. Per informazioni, vedere
Get-WmiObject
e WMI SDK. - 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à dei processi in MSDN Library.
- 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 di paging 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.