Condividi tramite


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

Process

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