Interessato a utilizzare il cmdlet PowerShell Get-Process per visualizzare i processi in esecuzione di un sistema? Con Get-Process
puoi trovare il proprietario del processo, l’ID del processo, o addirittura dove sul disco si trova il processo.
In questo articolo, imparerai come utilizzare il cmdlet Get-Process
di PowerShell attraverso esempi reali. Se manipolare i processi per piegarli alla tua volontà su Windows o Linux sembra divertente, allora continua a leggere!
Correlato: Come uccidere un processo in Linux usando ps, pgrep, pkill e altro ancora!
Prerequisiti
Prima di procedere oltre, di seguito sono riportati i prerequisiti necessari per seguire gli esempi in questo articolo.
- Sebbene Windows PowerShell 5.1 sia sufficiente per la maggior parte degli esempi qui, PowerShell 7.1 e successivo sono necessari per il supporto di Linux.
Correlato: Aggiornamento a PowerShell 7: Una panoramica
- Questo articolo utilizza Windows 10 e Ubuntu 20.04 LTS, ma qualsiasi sistema operativo su cui PowerShell funziona sarà compatibile.
Pronto? Lanciamoci e gestiamo alcuni processi!
Visualizzazione dei processi in esecuzione
Get-Process
gestisce i processi locali. In questo primo esempio, stai utilizzando il cmdlet PowerShell Get-Process. Questo comando visualizza tutti i processi in esecuzione.
Get-Process
restituisce uno snapshot istantaneo delle informazioni sui processi in esecuzione di un sistema. Per visualizzare le informazioni sui processi in tempo reale, Windows offre il Task Manager e Linux offre il comando top.
Per iniziare, apri la console di PowerShell e esegui Get-Process
. Nota che Get-Process
restituisce le informazioni sui processi in esecuzione, come mostrato di seguito. Il formato di output è identico per i sistemi operativi Windows e Linux.

Get-Process
cmdlet on Windows to display local processes.Per impostazione predefinita,
gps
ops
esistono come alias dei comandi perGet-Process
. Poiché PowerShell 7 è multipiattaforma, il comandops
entra in conflitto con un comando Linux integrato. Pertanto,ps
non funzionerà su Linux, solo l’aliasgps
.
Il significato dell’output di Get-Process
potrebbe non essere immediatamente ovvio. Le proprietà predefinite di Get-Process
sono descritte più dettagliatamente di seguito.
- NPM(K) – La quantità di memoria non paginata utilizzata da un processo, visualizzata in kilobyte, come indicato dalla notazione
(K)
. - PM(M) – La quantità di memoria paginabile utilizzata da un processo, visualizzata in megabyte, come indicato dalla notazione
(M)
. - WS(M) – Le dimensioni del set di lavoro del processo, visualizzate in megabyte. Il set di lavoro è costituito dalle pagine di memoria recentemente referenziate dal processo.
- VM(M) – La quantità di memoria virtuale utilizzata dal processo, visualizzata in megabyte. Include lo spazio di archiviazione nei file di paging su disco.
- CPU(S) – La quantità di tempo del processore utilizzata dal processo su tutti i processi, visualizzata in secondi.
- Id – L’ID del processo (PID) del processo.
- SI – Identificatore di sessione del processo in esecuzione. La sessione
0
indica che il processo è disponibile per tutti gli utenti,1
indica che il processo esiste sotto il primo utente connesso, e così via. - ProcessName – Il nome del processo in esecuzione.
Per visualizzare un elenco di alias di proprietà mappate su nomi completi delle proprietà, utilizzare il comando
Get-Process | Get-Member -MemberType 'AliasProperty'
.
Di seguito è riportato un altro ottimo esempio. Per ogni istanza del processo brave che trova, utilizza l’ID di quel processo ($_.id
) e lo passa a Get-NetTCPConnection
. PowerShell utilizza quindi Get-NetTCPConnection
per trovare informazioni su ogni connessione di rete aperta dal processo brave.
Esegui il seguente codice nella sessione di PowerShell quando il browser Brave è in esecuzione.
Grazie a Jay Adams di SystemFrontier!
Congratulazioni, ora puoi visualizzare tutti i processi in esecuzione sia su Windows che su Linux utilizzando il comando Get-Process
!
Trovare attributi specifici di un processo
Get-Process
restituisce molte proprietà diverse per i processi in esecuzione, come hai visto in precedenza. Come per tutti gli altri oggetti di PowerShell, puoi selezionare selettivamente le proprietà degli oggetti.
Passiamo ora a un esempio semplice di come puoi recuperare proprietà specifiche per un processo specifico:
- Avvia la calcolatrice di Windows.
2. Con una console di PowerShell aperta, esegui il comando Get-Process
utilizzando il parametro Name
per mostrare solo i processi in esecuzione con il nome Calcolatrice. Vedrai lo stesso output che hai visto in precedenza.
Get-Process
restituisce molte proprietà come previsto. Forse desideri solo trovare l’utilizzo della CPU con il valore sotto la colonna CPU(s)
. Racchiudi il comando Get-Process
tra parentesi e fa riferimento alla proprietà CPU
come mostrato di seguito. Vedrai che restituisce solo il valore della proprietà CPU
.
Nota che
Get-Process
restituisce un nome chiamatoCPU(s)
e il frammento di codice sopra utilizza il nome solo diCPU
. A volte, PowerShell non mostra il nome reale della proprietà nell’output. Questo concetto è eseguito con un file di formattazione PS1XML.
Il tempo CPU è espresso come totale dei secondi attraverso i core. Per ottenere un numero più leggibile per l’utente, arrotondalo al decimo più vicino usando un metodo Math
come mostrato di seguito.

Puoi utilizzare l’approccio sopra per trovare anche altre proprietà come
Id
se vuoi vedere solo l’ID di un processo.
Lascia in esecuzione l’applicazione Calculator. Utilizzerai questa applicazione per il resto degli esempi.
Recupero dell’utilizzo della memoria del processo
La risoluzione dei problemi nei sistemi con esecuzione lenta può essere una sfida, spesso causata da memoria limitata. Continuando con l’applicazione Calculator, recupera il processo Calculator
e mostra solo la proprietà VM
. Come mostrato di seguito, la memoria utilizzata è visualizzata in megabyte (MB).

Calculator
process memory usage.Per aiutare a comprendere l’utilizzo della memoria, utilizza i moltiplicatori di conversione integrati di PowerShell per cambiare i megabyte (MB) in gigabyte (GB). Nell’esempio seguente, convertirai la memoria utilizzata in GB e poi utilizzerai il libreria matematica .NET metodo Round
per arrotondare il valore, come mostrato nello screenshot seguente.
Utilizzare le utility integrate di PowerShell per convertire i valori rende più semplice comprendere l’output. Continua a leggere per imparare come individuare l’ID di un processo.

Esposizione di proprietà poco conosciute
Non tutte le proprietà sono incluse o mostrate per impostazione predefinita con Get-Process
. Continua a leggere di seguito per saperne di più sulle proprietà Path
e UserName
e su come utilizzarle!
Scoprire dove risiede un’eseguibile di processo
Ci sono molti luoghi in un sistema dove può essere archiviato un eseguibile di processo. Se un processo è attualmente in esecuzione, Get-Process
rende facile trovare il percorso del file di sistema del processo, nonostante Path
non venga visualizzato per impostazione predefinita. Come mostrato di seguito, la proprietà Path
contiene la posizione del filesystem dell’eseguibile del processo.

Get-Process
to display a process’s full file system path on Windows.Proprio come in Windows, Get-Process
in Linux restituisce anche il percorso del filesystem. Nell’esempio qui sotto, il processo gnome-calculator
è in esecuzione con il percorso visualizzato nell’output della console.

Get-Process
to display a process’s full file system path on Linux.Intelligenti attori malintenzionati possono dare lo stesso nome o simile a un processo fidato. Pertanto, la capacità di individuare il percorso del filesystem aiuta in uno scenario di risposta agli incidenti di sicurezza (IR). Continua a leggere per scoprire come individuare il proprietario del processo, poiché UserName
non è incluso nell’output predefinito.
Trovare il Proprietario del Processo
Per includere il valore UserName
nell’output, sarà necessario utilizzare il parametro IncludeUserName
. È importante conoscere il proprietario del processo, specialmente per evitare di interrompere involontariamente il processo di un altro utente. Come mostrato di seguito, la proprietà UserName
è ora inclusa nell’output del processo.

Calculator
process on Windows.Infine, continua a leggere per apprendere come utilizzare Get-Process
su un computer remoto per recuperare informazioni sui processi!
Trovare i Processi su Computer Remoti
Anche se in Windows PowerShell, Get-Process
non ha capacità remote di per sé, è sempre possibile sfruttare PowerShell Remoting e il comando Invoke-Command
per eseguirlo su computer remoti.
Correlato: Come configurare PSRemoting con Windows e Linux
Ma, se sei su Linux o stai eseguendo PowerShell 6 su Windows, ora hai un parametro ComputerName
che puoi utilizzare per interrogare processi su computer remoti.
Il parametro
-ComputerName
è stato rimosso in PowerShell 7.x poiché il cmdlet non è direttamente correlato al remoting. Per ottenere lo stesso risultato, puoi avvolgere il comando in unInvoke-Command
, così:Invoke-Command -ComputerName "NomeComputer" -ScriptBlock { Get-Process -ProcessName 'processo' }
Quando il comando sopra viene eseguito su un computer remoto, viene mostrato lo stesso output come se il comando Get-Process
fosse stato eseguito localmente.
Di seguito è riportato un esempio di remoting su un altro computer e ottenimento dei processi in esecuzione:

Puoi mirare a più computer separandoli con una virgola, ad esempio
Get-Process -ComputerName SRV1,SRV2.
Passaggi successivi
In questo articolo, hai imparato come utilizzare il cmdlet PowerShell Get-Process
per trovare processi in esecuzione con PowerShell su computer locali e remoti sia Linux che Windows.
Ora, cosa farai con questa conoscenza? Prova a passare un processo recuperato da Get-Process
a Stop-Process
su un computer locale o remoto per terminarlo!
Source:
https://adamtheautomator.com/powershell-get-process/