Pagina 1 di 1

Gestione dei processi e dei servizi

Inviato: 07/07/2024, 21:50
da FrancyDotNet
PowerShell è uno strumento potente che consente di monitorare i processi in esecuzione sul sistema. In questo articolo, vedremo alcuni esempi pratici di script PowerShell per ottenere informazioni dettagliate sui processi, inclusi CPU e utilizzo della memoria, e come filtrare e ordinare i processi per identificare quelli più intensivi.

:arrowright: 1. Ottenere Informazioni di Base sui Processi

Questo script utilizza Get-Process per ottenere un elenco di tutti i processi in esecuzione sul sistema.

Codice: Seleziona tutto

# Ottieni un elenco di tutti i processi in esecuzione
$processes = Get-Process

# Visualizza il nome e l'ID di ogni processo
foreach ($process in $processes) {
    Write-Output "Nome processo: $($process.Name) - ID processo: $($process.Id)"
}
:arrowright: 2. Monitorare l'Utilizzo della CPU e della Memoria

Questo script monitora l'utilizzo della CPU e della memoria per ogni processo in esecuzione.

Codice: Seleziona tutto

# Ottieni informazioni sui processi in esecuzione
$processes = Get-Process | Select-Object Name, Id, CPU, WorkingSet

# Visualizza l'utilizzo della CPU e della memoria per ogni processo
foreach ($process in $processes) {
    $cpuUsage = $process.CPU
    $memoryUsage = $process.WorkingSet / 1MB
    Write-Output "Nome processo: $($process.Name) - ID processo: $($process.Id) - Utilizzo CPU: $cpuUsage - Utilizzo memoria: $([math]::round($memoryUsage, 2)) MB"
}
:arrowright: 3. Filtrare i Processi per Utilizzo della CPU

Questo script filtra i processi in esecuzione per identificare quelli con il maggiore utilizzo della CPU.

Codice: Seleziona tutto

# Ottieni informazioni sui processi in esecuzione
$processes = Get-Process | Sort-Object CPU -Descending

# Filtra i processi con utilizzo CPU maggiore di una soglia specificata
$threshold = 10
$highCpuProcesses = $processes | Where-Object { $_.CPU -gt $threshold }

# Visualizza i processi con utilizzo CPU elevato
foreach ($process in $highCpuProcesses) {
    Write-Output "Nome processo: $($process.Name) - ID processo: $($process.Id) - Utilizzo CPU: $($process.CPU)"
}
:arrowright: 4. Filtrare i Processi per Utilizzo della Memoria

Questo script filtra i processi in esecuzione per identificare quelli con il maggiore utilizzo della memoria.

Codice: Seleziona tutto

# Ottieni informazioni sui processi in esecuzione
$processes = Get-Process | Sort-Object WorkingSet -Descending

# Filtra i processi con utilizzo memoria maggiore di una soglia specificata
$threshold = 100MB
$highMemoryProcesses = $processes | Where-Object { $_.WorkingSet -gt $threshold }

# Visualizza i processi con utilizzo memoria elevato
foreach ($process in $highMemoryProcesses) {
    $memoryUsage = $process.WorkingSet / 1MB
    Write-Output "Nome processo: $($process.Name) - ID processo: $($process.Id) - Utilizzo memoria: $([math]::round($memoryUsage, 2)) MB"
}
:arrowright: 5. Monitoraggio Continuo dei Processi

Questo script esegue il monitoraggio continuo dei processi in esecuzione e registra i risultati in un file di log.

Codice: Seleziona tutto

# Definisci il file di log
$logFile = "C:\Logs\ProcessMonitoring.log"

# Esegui il monitoraggio continuo
while ($true) {
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

    # Ottieni informazioni sui processi in esecuzione
    $processes = Get-Process | Select-Object Name, Id, CPU, WorkingSet

    # Registra le informazioni sui processi nel file di log
    foreach ($process in $processes) {
        $cpuUsage = $process.CPU
        $memoryUsage = $process.WorkingSet / 1MB
        Add-Content -Path $logFile -Value "$timestamp - Nome processo: $($process.Name) - ID processo: $($process.Id) - Utilizzo CPU: $cpuUsage - Utilizzo memoria: $([math]::round($memoryUsage, 2)) MB"
    }

    Start-Sleep -Seconds 60
}
Assicurati di eseguire questi script con i permessi appropriati e di modificare le variabili come necessario per il tuo ambiente. Puoi anche programmare l'esecuzione automatica di questi script utilizzando Task Scheduler su Windows.