Come ottenere l'elenco dei processi in esecuzione in PowerShell

  1. Usa il cmdlet Get-Process per mostrare un elenco dei processi in esecuzione in PowerShell
  2. Conclusione
Come ottenere l'elenco dei processi in esecuzione in PowerShell

Questo articolo esplora l’utilizzo di PowerShell per il monitoraggio dei processi, enfatizzando il cmdlet Get-Process. Il cmdlet Get-Process, un elemento fondamentale nella gestione dei processi, offre una panoramica completa dei processi in esecuzione su un computer Windows, mostrando informazioni critiche come ID dei processi, nomi, utilizzo della memoria e consumo della CPU.

L’articolo svela metodicamente la sintassi e i parametri del cmdlet, rivolgendo attenzione sia alle query sui processi generali che specifiche.

Usa il cmdlet Get-Process per mostrare un elenco dei processi in esecuzione in PowerShell

Ci sono più di 200 cmdlet disponibili nell’ambiente PowerShell. Ogni cmdlet è responsabile dell’esecuzione di una funzione specifica.

Il Get-Process è uno dei cmdlet più utilizzati che aiuta a recuperare l’elenco dei processi in esecuzione sulla macchina Windows.

Questo cmdlet fornisce informazioni utili relative a ciascun processo, come ID del processo, nome, utilizzo della memoria, ecc. Inoltre, mostra una panoramica dei processi in esecuzione del sistema.

Sintassi:

Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Parametri:

  • ProcessName string[]: Specifica un array di nomi di processi da recuperare. Questo parametro accetta caratteri jolly per il matching dei modelli. Se questo parametro è omesso, Get-Process recupera tutti i processi.
  • ProcessId Int32[]: Specifica gli ID dei processi da recuperare. Questo parametro consente di mirare a processi specifici direttamente.
  • InputObject Process[]: Specifica un array di oggetti processo. Questo parametro consente di inviare oggetti processo a Get-Process.
  • NameOfTheComputer string[]: Indica il/i nome/i dei computer su cui eseguire il comando. Se questo parametro è omesso, Get-Process recupera i processi dal computer locale.
  • FileVersionInfo: Aggiunge informazioni sulla versione del file agli oggetti processo. Questo è utile quando desideri dettagli sul file eseguibile del processo, come versione, nome del prodotto, ecc.
  • Module: Include i moduli (DLL e file eseguibili) che sono caricati da ciascun processo. Questo è utile per un’analisi più dettagliata, come controllare quali DLL sono caricate da un processo.
  • [CommonParameters]: Questi sono i parametri che tutti i cmdlet supportano, come -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutVariable, -OutBuffer e -PipelineVariable.

I parametri sono opzionali per il cmdlet Get-Process, e puoi utilizzare questi parametri in base alle tue necessità.

Visualizza tutti i processi in esecuzione

Possiamo utilizzare direttamente il comando Get-Process senza alcun parametro. Dovrebbe mostrare tutti i processi in esecuzione in quel momento.

Inoltre, l’alias gps può essere utilizzato al posto del comando Get-Process.

Get-Process
gps

Output:

Visualizza tutti i processi in esecuzione

Eseguendo Get-Process o gps, PowerShell inizia una query a livello di sistema per raccogliere informazioni su tutti i processi attivi. L’assenza di parametri in questi comandi segnala a PowerShell di non applicare filtri e recuperare dettagli per ogni processo.

PowerShell quindi raccoglie dati dettagliati su ciascun processo in esecuzione. Questi dati includono vari attributi che descrivono lo stato e le caratteristiche di questi processi.

PowerShell li formatta in una tabella per la visualizzazione. Questo formato tabellare è progettato per presentare le informazioni in modo chiaro e leggibile.

La tabella include tipicamente diverse colonne chiave:

  1. Id: Questa colonna mostra l’Identificatore del Processo (PID), un’etichetta numerica unica assegnata a ciascun processo. Il PID è cruciale per identificare e gestire specifici processi.
  2. ProcessName: Questo è il nome del file eseguibile che ha avviato il processo. Aiuta a riconoscere facilmente il processo, specialmente per applicazioni ben note.
  3. CPU(s): Qui vediamo la quantità di tempo CPU che il processo ha consumato. Questo è misurato in secondi ed è vitale per valutare quali processi stanno utilizzando risorse CPU significative, con potenziale impatto sulle prestazioni del sistema.
  4. PM(K): Questo sta per Paged Memory in Kilobyte. Rappresenta la dimensione della memoria che il processo sta utilizzando e che può essere paginata su disco. Questa metrica è importante per monitorare l’uso della memoria dei processi, fondamentale per la regolazione delle prestazioni e la gestione delle risorse.

Recupera le informazioni per un singolo processo

Quando utilizzi PowerShell per recuperare informazioni su un processo specifico, abbiamo un paio di opzioni di sintassi. Sia Get-Process -Name processName che Get-Process processName sono validi e raggiungono lo stesso risultato, ma differiscono leggermente nella loro struttura sintattica.

Get-Process -Name typora

OPPURE

Get-Process typora

Quando eseguiamo Get-Process -Name typora o Get-Process typora, PowerShell filtra i processi in esecuzione e restituisce informazioni specificamente per il processo denominato typora. Questo è particolarmente utile quando conosciamo il nome esatto del processo di nostro interesse.

Dietro le quinte, PowerShell cerca nell’elenco di tutti i processi e abbina il nome del processo con typora. Se il processo è in esecuzione, i suoi dettagli vengono visualizzati.

Output:

Get-Process -Name

Recupera le informazioni per più processi

Quando utilizziamo il cmdlet Get-Process in PowerShell per recuperare informazioni su più processi, come nel comando Get-Process NotePad, Outlook, stiamo sfruttando la capacità di PowerShell di gestire più elementi simultaneamente.

Get-Process NotePad, Outlook

Eseguendo Get-Process NotePad, Outlook, istruiamo PowerShell a recuperare dettagli per più processi simultaneamente, in questo caso, NotePad e Outlook. Questo comando è utile quando dobbiamo monitorare diversi processi specifici.

PowerShell esegue un’operazione simile a quella del comando a processo singolo, ma per ciascun nome di processo specificato, visualizzando tutte le corrispondenze.

Output:

Ottieni-Processo Multiplo

Inoltre, puoi usare i caratteri jolly per il nome del processo.

Recupera oggetti processo con gli attributi dati

Possiamo visualizzare le informazioni sugli oggetti processo per attributi specifici quando necessario. Recuperiamo solo l’ID del processo per il processo NotePad.

(Get-Process NotePad).Id

Nel comando (Get-Process NotePad).Id, otteniamo prima l’oggetto processo per NotePad e poi accediamo alla sua proprietà Id. Questa tecnica è utile quando siamo interessati solo a informazioni specifiche su un processo, come il suo ID del processo.

Output:

Recupera oggetti di processo con gli attributi dati

Inoltre, possiamo recuperare l’attributo del tempo CPU per il processo NotePad, come mostrato di seguito.

(Get-Process NotePad).CPU

Allo stesso modo, (Get-Process NotePad).CPU recupera le informazioni sull’uso della CPU per il processo NotePad. Questi comandi dimostrano come possiamo estrarre punti dati particolari dagli oggetti processo.

Output:

ottieni processo cpu

Visualizza il proprietario del processo

L’output predefinito del comando Get-Process non visualizza l’attributo ProcessOwner. Ma questo può essere un’informazione preziosa quando è necessario terminare un dato processo.

Possiamo utilizzare il parametro -IncludeUserName per includere l’attributo ProcessOwner nell’output.

Get-Process -Name notepad -IncludeUserName

Il comando Get-Process -Name notepad -IncludeUserName estende il comportamento predefinito di Get-Process includendo il nome utente del proprietario del processo nell’output. Il parametro -IncludeUserName è essenziale quando dobbiamo identificare quale utente sta eseguendo un processo specifico, il che può essere critico in ambienti multi-utente o per la risoluzione dei problemi.

Questo comando migliora la nostra visibilità nei processi, specialmente riguardo alla loro proprietà.

Output:

Get-Process IncludeUserName

Conclusione

Questa guida completa ha illuminato il potere e la versatilità di PowerShell nella gestione e nel monitoraggio dei processi di sistema. Abbiamo percorso le applicazioni pratiche del cmdlet Get-Process, a partire dall’elencare tutti i processi in esecuzione fino a individuare quelli specifici e approfondire l’estrazione di attributi di processo particolari.

L’articolo ha inoltre mostrato l’abilità di PowerShell nell gestire più processi simultaneamente e la facilità di integrazione di informazioni centrate sull’utente, come la proprietà dei processi.

Questa integrazione del cmdlet Get-Process sottolinea la robustezza e l’adattabilità di PowerShell nel campo della gestione dei processi, offrendo una gamma di strumenti per gli amministratori di sistema per monitorare, analizzare e gestire i processi in modo efficace all’interno di un ambiente Windows.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.