Pagina 1 di 1

Gestione delle risorse di sistema

Inviato: 07/07/2024, 21:44
da FrancyDotNet
PowerShell è uno strumento potente che consente di monitorare e gestire le risorse di sistema in modo efficiente. In questo articolo, vedremo alcuni esempi pratici di script PowerShell per monitorare l'utilizzo della CPU, della memoria, del disco e di altre risorse di sistema.

:arrowright: 1. Monitorare l'Utilizzo della CPU

Questo script monitora l'utilizzo della CPU e visualizza l'utilizzo percentuale della CPU per ogni processore.

Codice: Seleziona tutto

# Ottieni le informazioni sull'utilizzo della CPU
$cpuUsage = Get-CimInstance -ClassName Win32_Processor | Select-Object Name, LoadPercentage

# Visualizza l'utilizzo della CPU
foreach ($cpu in $cpuUsage) {
    Write-Output "Processore: $($cpu.Name) - Utilizzo: $($cpu.LoadPercentage)%"
}
:arrowright: 2. Monitorare l'Utilizzo della Memoria

Questo script monitora l'utilizzo della memoria e visualizza la quantità di memoria utilizzata e disponibile.

Codice: Seleziona tutto

# Ottieni le informazioni sull'utilizzo della memoria
$memoryUsage = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory

# Calcola la memoria utilizzata
$totalMemory = $memoryUsage.TotalVisibleMemorySize / 1MB
$freeMemory = $memoryUsage.FreePhysicalMemory / 1MB
$usedMemory = $totalMemory - $freeMemory

# Visualizza l'utilizzo della memoria
Write-Output "Memoria totale: $([math]::round($totalMemory, 2)) MB"
Write-Output "Memoria utilizzata: $([math]::round($usedMemory, 2)) MB"
Write-Output "Memoria libera: $([math]::round($freeMemory, 2)) MB"
:arrowright: 3. Monitorare l'Utilizzo del Disco

Questo script monitora l'utilizzo del disco e visualizza la capacità totale, lo spazio utilizzato e lo spazio libero per ogni unità disco.

Codice: Seleziona tutto

# Ottieni le informazioni sull'utilizzo del disco
$diskUsage = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, Size, FreeSpace

# Visualizza l'utilizzo del disco per ogni unità
foreach ($disk in $diskUsage) {
    $totalSize = $disk.Size / 1GB
    $freeSpace = $disk.FreeSpace / 1GB
    $usedSpace = $totalSize - $freeSpace
    Write-Output "Unità: $($disk.DeviceID)"
    Write-Output "Capacità totale: $([math]::round($totalSize, 2)) GB"
    Write-Output "Spazio utilizzato: $([math]::round($usedSpace, 2)) GB"
    Write-Output "Spazio libero: $([math]::round($freeSpace, 2)) GB"
    Write-Output "----"
}
:arrowright: 4. Monitorare l'Utilizzo della Rete

Questo script monitora l'utilizzo della rete e visualizza le statistiche di invio e ricezione dei dati per ogni scheda di rete.

Codice: Seleziona tutto

# Ottieni le informazioni sull'utilizzo della rete
$networkUsage = Get-NetAdapterStatistics

# Visualizza le statistiche di rete per ogni scheda
foreach ($adapter in $networkUsage) {
    Write-Output "Scheda di rete: $($adapter.Name)"
    Write-Output "Bytes inviati: $($adapter.OutboundBytesReceived)"
    Write-Output "Bytes ricevuti: $($adapter.InboundBytesReceived)"
    Write-Output "----"
}
:arrowright: 5. Monitoraggio Continuo delle Risorse di Sistema

Questo script esegue il monitoraggio continuo delle risorse di sistema e registra i risultati in un file di log.

Codice: Seleziona tutto

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

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

    # Monitoraggio CPU
    $cpuUsage = Get-CimInstance -ClassName Win32_Processor | Select-Object LoadPercentage
    $cpuLoad = $cpuUsage.LoadPercentage

    # Monitoraggio Memoria
    $memoryUsage = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory
    $totalMemory = $memoryUsage.TotalVisibleMemorySize / 1MB
    $freeMemory = $memoryUsage.FreePhysicalMemory / 1MB
    $usedMemory = $totalMemory - $freeMemory

    # Monitoraggio Disco
    $diskUsage = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, Size, FreeSpace
    $diskInfo = ""
    foreach ($disk in $diskUsage) {
        $totalSize = $disk.Size / 1GB
        $freeSpace = $disk.FreeSpace / 1GB
        $usedSpace = $totalSize - $freeSpace
        $diskInfo += "Unità: $($disk.DeviceID), Capacità totale: $([math]::round($totalSize, 2)) GB, Spazio utilizzato: $([math]::round($usedSpace, 2)) GB, Spazio libero: $([math]::round($freeSpace, 2)) GB`n"
    }

    # Scrivi i risultati nel file di log
    Add-Content -Path $logFile -Value "$timestamp - CPU: $cpuLoad%, Memoria totale: $([math]::round($totalMemory, 2)) MB, Memoria utilizzata: $([math]::round($usedMemory, 2)) MB, Memoria libera: $([math]::round($freeMemory, 2)) MB`n$diskInfo"

    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.

Re: Gestione delle risorse di sistema

Inviato: 07/07/2024, 21:44
da FrancyDotNet
:ugeek: