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