PowerShell – monitorowanie sprawności dysku twardego

Ciekawy skrypt autorstwa Sama Eastmana ( https://www.linkedin.com/pulse/proactive-disk-health-monitoring-powershell-sam-eastman-sjw2c ), który w połączeniu z wysyłaniem loga na maila w przypadku innego statusu niż Healty, jest bardzo ciekawym rozwiązaniem.

<##################################################################################################
Title: Get-DiskInfo

.SYNOPSIS
    Script will query each connected disk and output statistics
###################################################################################################>

# Variables
$directoryPath = "C:\temp"
$logFilePath   = "C:\temp\DiskHealthCheck.log"
$disks         = Get-PhysicalDisk

# Functions
function Get-TempDirectory {
    # Check if the directory exists
    if (-not (Test-Path -Path $directoryPath -PathType Container)) {
        # If the directory does not exist, create it
        New-Item -Path $directoryPath -ItemType Directory
        Write-Host "Directory created: $directoryPath"
    } else {
        Write-Host "Directory already exists: $directoryPath"
    }
}

function Get-DiskInformation {
    foreach ($disk in $disks) {
        # Get Disk Reliability Statistics
        $reliabilityCounters = Get-StorageReliabilityCounter -PhysicalDisk $disk
        
        $logEntry = @"
-----------------------------------------------------------------------------------------
Disk: $($disk.FriendlyName)
Operational Status: $($disk.OperationalStatus)
Temperature: $($reliabilityCounters.Temperature)°C
Wear Level: $($reliabilityCounters.Wear)
Status: $($disk.HealthStatus)
-----------------------------------------------------------------------------------------
"@

        Add-Content -Path $logFilePath -Value $logEntry
    }
}

# Body
Get-TempDirectory
Get-DiskInformation