Come trovare l'uso della CPU e della RAM utilizzando PowerShell
-
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con
Get-Counter
-
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con
Get-WmiObject
-
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con
Get-Process
- Conclusione

Man mano che la tecnologia avanza, la necessità di un monitoraggio efficiente del sistema diventa sempre più cruciale. Gli amministratori e gli utenti di Windows spesso si trovano a cercare modi rapidi ed efficaci per valutare l’uso della CPU e della RAM per ottimizzare le prestazioni del sistema sulle loro macchine Windows.
In questo articolo esploreremo il potere di PowerShell, un linguaggio di scripting versatile nell’ambiente Windows, e scopriremo come può essere utilizzato per trovare e monitorare l’uso della CPU e della RAM senza soluzione di continuità.
Sfruttando le capacità di PowerShell, gli utenti possono ottenere informazioni in tempo reale sull’uso della memoria del loro sistema, consentendo loro di prendere decisioni informate e garantire un’esperienza di calcolo fluida.
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con Get-Counter
PowerShell, con i suoi potenti cmdlet, offre una soluzione robusta per recuperare i dati sulle prestazioni in tempo reale. Uno di questi cmdlet, Get-Counter
, fornisce un modo versatile ed efficiente per accedere a queste informazioni.
Il cmdlet Get-Counter
ci consente di recuperare i dati dei contatori delle prestazioni da macchine locali o remote. Per monitorare l’uso della CPU e della RAM, possiamo utilizzare percorsi specifici dei contatori delle prestazioni.
Ecco la sintassi di base:
Get-Counter -Counter "\CounterPath"
Per l’uso della CPU, il percorso del contatore è '\Processor(_Total)\% Processor Time'
, e per l’uso della RAM è '\Memory\Available MBytes'
.
Esempio di codice PowerShell per trovare l’uso della CPU e della memoria utilizzando Get-Counter
Immergiamoci in un esempio di codice completo che dimostra come utilizzare Get-Counter
per monitorare sia l’uso della CPU che della RAM:
# PowerShell get memory usage
Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
$cpuUsage = $_.CounterSamples.CookedValue
Write-Host "Current CPU Usage: $cpuUsage%"
}
Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
$ramUsage = $_.CounterSamples.CookedValue
Write-Host "Available RAM: ${ramUsage}MB"
}
Analizziamo ciascuna sezione del codice per comprenderne la funzionalità.
Monitoraggio dell’uso della CPU:
Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
$cpuUsage = $_.CounterSamples.CookedValue
Write-Host "Current CPU Usage: $cpuUsage%"
}
Nella prima parte, utilizziamo Get-Counter
per recuperare dati in tempo reale sulla percentuale di tempo totale del processore utilizzato. Il percorso del contatore specificato, '\Processor(_Total)\% Processor Time'
, mira all’uso complessivo della CPU su tutti i core.
Il parametro -Continuous
assicura che il comando venga eseguito continuamente, fornendo aggiornamenti dal vivo, e si interrompe solo quando viene premuto CTRL+C.
L’output di Get-Counter
viene quindi passato attraverso un ciclo ForEach-Object
. Per ogni campione di contatore ricevuto, lo script estrae il valore elaborato (CookedValue
), che rappresenta la percentuale di uso attuale della CPU.
Questo valore è memorizzato nella variabile $cpuUsage
, e un messaggio che mostra l’uso attuale della CPU viene stampato sulla console utilizzando la funzione di PowerShell Write-Host
.
Output del codice:
Monitoraggio dell’uso della memoria (RAM):
Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
$ramUsage = $_.CounterSamples.CookedValue
Write-Host "Available RAM: ${ramUsage}MB"
}
La seconda parte dello script si concentra sul monitoraggio della percentuale di memoria. Simile alla sezione CPU, utilizziamo Get-Counter
con il percorso del contatore '\Memory\Available MBytes'
per recuperare continuamente i dati sulla memoria disponibile in megabyte.
Il parametro -Continuous
assicura un monitoraggio continuo.
Ancora una volta, l’output viene elaborato in un ciclo ForEach-Object
. Per ciascun campione di contatore ricevuto, lo script estrae il valore elaborato che rappresenta i byte disponibili nella RAM, il quale è memorizzato nella variabile $ramUsage
.
L’ultimo passaggio comporta la visualizzazione delle informazioni sulla RAM disponibile sulla console utilizzando Write-Host
.
Output del codice:
Questa visualizzazione in tempo reale delle informazioni è inestimabile per gli amministratori di sistema e gli utenti, consentendo loro di identificare e affrontare rapidamente i problemi di prestazioni. Get-Counter
semplifica il processo di monitoraggio dell’uso della CPU e della RAM, rendendolo uno strumento essenziale nell’arsenale di PowerShell.
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con Get-WmiObject
Oltre al cmdlet Get-Counter
, PowerShell offre un altro potente strumento, Get-WmiObject
, per raccogliere informazioni sul sistema, inclusi l’uso della CPU e della RAM.
Il cmdlet Get-WmiObject
ci consente di accedere alle classi di Windows Management Instrumentation (WMI), fornendo una ricchezza di informazioni sul sistema. Per monitorare l’uso della CPU e della memoria fisica, vengono interrogate classi e proprietà WMI specifiche.
La sintassi di base è la seguente:
Get-WmiObject -Class WMI_Class | Select-Object Property1, Property2, ...
Per l’uso della CPU, utilizziamo la classe Win32_Processor
, e per l’uso della RAM o della memoria fisica, la classe Win32_OperatingSystem
.
Esempio di codice PowerShell per trovare l’uso della CPU e della RAM utilizzando Get-WmiObject
Esploriamo un esempio di codice completo che dimostra come utilizzare Get-WmiObject
per monitorare sia l’uso della CPU che della RAM:
# PowerShell get memory usage of all the processes
$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"
$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"
Analizziamo ciascuna sezione dello script PowerShell sopra per comprendere la sua funzionalità.
Monitoraggio dell’uso della CPU:
$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"
Qui, lo script utilizza prima Get-WmiObject
per interrogare informazioni dalla classe Win32_Processor
, che contiene dettagli sul processore del sistema. Le informazioni ottenute sono memorizzate nella variabile $cpuObject
.
Successivamente, lo script estrae la proprietà LoadPercentage
da $cpuObject
, che rappresenta la percentuale di carico attuale della CPU. Questo valore viene quindi memorizzato nella variabile $cpuLoadPercentage
.
Infine, un messaggio che mostra la percentuale di carico della CPU viene stampato sulla console utilizzando Write-Host
.
Output del codice:
Monitoraggio dell’uso della memoria (RAM):
$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"
Nella sezione di monitoraggio della RAM, lo script utilizza Get-WmiObject
per recuperare informazioni dalla classe Win32_OperatingSystem
, che contiene varie proprietà relative al sistema operativo, inclusi dettagli sulla memoria. Le informazioni acquisite sono memorizzate nella variabile $ramObject
.
Successivamente, lo script calcola la RAM disponibile in gigabyte sottraendo la memoria fisica libera (FreePhysicalMemory
) dalla memoria fisica totale o la dimensione totale della memoria visibile (TotalVisibleMemorySize
). Il risultato viene quindi arrotondato a due decimali utilizzando [math]::Round
per garantire un output più pulito.
Il valore della RAM disponibile in gigabyte è memorizzato nella variabile $ramUsageGB
. Infine, un messaggio che mostra la RAM disponibile viene stampato sulla console utilizzando Write-Host
.
Output del codice:
Queste informazioni, recuperate utilizzando il cmdlet Get-WmiObject
, forniscono preziose informazioni sulle prestazioni del sistema, consentendo agli utenti di monitorare efficacemente l’utilizzo delle risorse e prendere decisioni informate per l’ottimizzazione del sistema. La semplicità e chiarezza dello script lo rendono uno strumento versatile per amministratori e utenti.
Come trovare l’uso della CPU e della RAM utilizzando PowerShell con Get-Process
Come parte della nostra esplorazione sul monitoraggio delle prestazioni del sistema con PowerShell, ci concentreremo ora sul cmdlet Get-Process
. A differenza di Get-Counter
e Get-WmiObject
, Get-Process
fornisce informazioni sui processi in esecuzione sulla macchina locale, permettendoci di estrarre dettagli percentuali su CPU e memoria.
Il cmdlet Get-Process
recupera informazioni sui processi attualmente in esecuzione su un computer locale o remoto. Per monitorare l’uso della CPU e della RAM, filtreremo ed estrarremo informazioni pertinenti dall’output.
La sintassi di base è la seguente:
Get-Process -Name "ProcessName" | Select-Object Property1, Property2, ...
Per l’uso della CPU, ci concentreremo sulla proprietà CPU
, e per l’uso della RAM, sulla proprietà WorkingSet
.
Esempio di codice PowerShell per trovare l’uso della CPU e della RAM utilizzando Get-Process
Esploriamo un esempio di codice completo che dimostra come utilizzare Get-Process
per monitorare sia l’uso della CPU che della RAM:
# PowerShell get memory usage
$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
$processName = $process.ProcessName
$cpuUsage = $process.CPU
Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}
$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
$processName = $process.ProcessName
$ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}
Simile agli esempi precedenti, questo script PowerShell è anche organizzato in due sezioni: una focalizzata sull’uso della CPU e l’altra sull’uso della RAM. Analizziamo ciascuna sezione del codice.
Monitoraggio dell’uso della CPU:
$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
$processName = $process.ProcessName
$cpuUsage = $process.CPU
Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}
Nella prima sezione di codice, lo script inizia utilizzando Get-Process
per recuperare informazioni su tutti i processi in esecuzione nel sistema. L’output viene quindi ordinato in ordine decrescente in base all’uso della CPU utilizzando Sort-Object
.
Il Select-Object -First 5
assicura che vengano considerati solo i primi 5 processi con il maggior uso della CPU. I processi risultanti sono memorizzati nella variabile $cpuProcesses
.
Un ciclo ForEach
viene utilizzato per iterare attraverso ogni oggetto processo in $cpuProcesses
. Per ciascun processo, lo script estrae il nome del processo (ProcessName
) e l’uso della CPU (CPU
).
Queste informazioni vengono quindi visualizzate sulla console utilizzando Write-Host
, presentando il nome del processo insieme alla sua corrispondente percentuale di uso della CPU.
Output del codice:
Monitoraggio dell’uso della memoria (RAM):
$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
$processName = $process.ProcessName
$ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}
Nella seconda sezione di codice, viene adottato un approccio simile. Anche qui, Get-Process
è utilizzato per raccogliere informazioni su tutti i processi in esecuzione.
L’output viene quindi ordinato in base all’uso della RAM (WorkingSet
) in ordine decrescente, e vengono selezionati solo i primi 5 processi in esecuzione. I processi risultanti sono memorizzati nella variabile $ramProcesses
.
Un ciclo ForEach
itera attraverso ogni processo in $ramProcesses
. Per ciascun processo, lo script estrae il nome del processo e calcola l’uso della RAM in megabyte.
Il calcolo comporta la divisione della dimensione del set di lavoro per 1 megabyte e l’arrotondamento del risultato a due decimali utilizzando [math]::Round
. Le informazioni vengono quindi visualizzate sulla console utilizzando Write-Host
, presentando il nome del processo insieme al suo corrispondente uso della RAM in megabyte.
Output del codice:
Questo script fornisce un approccio dinamico al monitoraggio dell’uso della CPU e della memoria, concentrandosi sui processi più dispendiosi in termini di risorse. Sfruttando le capacità di Get-Process
, amministratori e utenti possono ottenere informazioni sulle attività intensive in risorse sui loro sistemi.
Conclusione
Monitorare l’uso della CPU e della RAM è essenziale per mantenere un ambiente di calcolo sano e reattivo. PowerShell, con il suo ricco set di cmdlet, fornisce strumenti potenti come Get-Counter
, Get-WmiObject
e Get-Process
per semplificare questo processo.
Sia che tu preferisca aggiornamenti in tempo reale, informazioni dettagliate sulle classi WMI o approfondimenti sui singoli processi, PowerShell offre soluzioni flessibili per soddisfare diverse esigenze di monitoraggio. Incorporando queste tecniche nel tuo toolkit di gestione del sistema, puoi rimanere facilmente informato sull’uso della CPU e della RAM, consentendo interventi tempestivi e un’ottimizzazione proattiva del sistema.