Die wichtigsten Erkenntnisse
- Proaktive SSD-Überwachung: Das Skript ermöglicht die frühzeitige Erkennung von SSD-Verschleiß und potenziellen Ausfällen, was für die Aufrechterhaltung der Systemleistung und der Datenintegrität entscheidend ist.
- Anpassbare Schwellenwerte: Es ermöglicht die Festlegung eines Schwellenwerts für den Verschleiß und bietet damit Flexibilität bei der Definition, was ein SSD ausmacht, das sich dem Ende seiner Lebensdauer nähert.
- Erfordert Administratorrechte: Die Ausführung des Skripts erfordert Administratorrechte, um auf detaillierte Festplatteninformationen zugreifen zu können.
- Kompatibilität und Anforderungen: Es wurde für Windows 10 und Server 2016 und höher entwickelt, um die Kompatibilität mit modernen Windows-Umgebungen zu gewährleisten.
- Automatisierbar und integrierbar: Das Skript kann für eine regelmäßige Ausführung geplant und in umfassendere IT-Management-Systeme wie NinjaOne integriert werden.
- Keine externen Tools erforderlich: Es verwendet PowerShell und interne Windows-Befehle, sodass keine SSD-Überwachungs-Tools von Drittanbietern erforderlich sind.
- Entscheidend für die IT-Gesundheit: Die regelmäßige Ausführung dieses Skripts ist für IT-Expert:innen und MSPs unerlässlich, um SSD-Problemen vorzubeugen.
- Umfassende Berichterstattung: Das Skript liefert detaillierte Informationen über den Abnutzungsgrad der SSD, die Temperatur sowie Schreibfehler und bietet so einen umfassenden Überblick über den Zustand der SSD.
- Verhindert Datenverlust: Durch die Identifizierung von ausfallgefährdeten SSDs hilft das Skript bei der Planung von Ersatz oder Backups und verhindert so mögliche Datenverluste.
- Verbessert die IT-Entscheidungsfindung: Die vom Skript bereitgestellten Informationen helfen dabei, fundierte Entscheidungen über die Wartung und Upgrade von Hardware zu treffen.
Solid State Drives (SSDs) sind zu einem Eckpfeiler der modernen Datenverarbeitung geworden, da sie im Vergleich zu herkömmlichen Festplatten schnellere Datenzugriffsgeschwindigkeiten und höhere Zuverlässigkeit bieten. Doch wie jede Technologie sind auch SSDs nicht gegen Verschleiß und mögliche Ausfälle gefeit. Für IT-Expert:innen und Managed Service Provider (MSPs) ist die präventive Erkennung von SSD-Problemen entscheidend für die Aufrechterhaltung der Systemzuverlässigkeit und Datenintegrität.
Kontext
Das fragliche PowerShell-Skript wurde entwickelt, um den Zustand von SSDs in einer Windows-Umgebung zu bewerten. Es ist ein unverzichtbares Tool für IT-Expert:innen und MSPs, das es ihnen ermöglicht, den Verschleißgrad und die Fehlerraten von SSDs proaktiv zu überwachen. Dieser präventive Ansatz ist entscheidend für die Vermeidung von Datenverlusten und die Sicherstellung der Systemleistung.
Das Skript zur Überprüfung des SSD-Zustands
#Requires -Version 5.1 <# .SYNOPSIS Conditional script that helps determine if an SSD drive is failing or has failed. .DESCRIPTION Conditional script that helps determine if an SSD drive is failing or has failed. A wear % of 100% indicates that the estimated wear level as been reached. Do note that some drives don't report all the needed details to the OS. This can be caused by a RAID card, settings in the BIOS, or the drive it self. .PARAMETER WearLevelPercentMax The max estimated wear level percentage to fail at. The default is 80 %. .EXAMPLE -WearLevelPercentMax 90 Fail if SSD is found to have used 90% of its estimated wear leveling. .OUTPUTS None .NOTES Minium Supported OS: Windows 10, Server 2016 Release Notes: Renamed script and added Script Variable support By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param ( [int] $WearLevelPercentMax = 80 ) begin { if ($env:WearLevelPercentMax) { $WearLevelPercentMax = $env:WearLevelPercentMax } function Write-UnhealthyDisk { param([PSObject[]]$Disks) process { $Disks | ForEach-Object { try { $PhysicalDisk = Get-PhysicalDisk -DeviceNumber $_ | Select-Object FriendlyName, DeviceId, MediaType, OperationalStatus, HealthStatus $StorageReliabilityCounters = Get-PhysicalDisk -DeviceNumber $_ | Get-StorageReliabilityCounter | Select-Object Temperature, WriteErrorsTotal, Wear Write-Host "$($PhysicalDisk.FriendlyName)" Write-Host "DeviceId: $($PhysicalDisk.DeviceId) | Type: $($PhysicalDisk.MediaType) | Status: $($PhysicalDisk.OperationalStatus) | Health: $($PhysicalDisk.HealthStatus)" Write-Host "Temp: $($StorageReliabilityCounters.Temperature) C° | Total Write Errors: $($StorageReliabilityCounters.WriteErrorsTotal) | Wear: $($StorageReliabilityCounters.Wear)%" Write-Host "" Write-Output 1 } catch { # Skip this drive Write-Output 0 } } | Measure-Object -Sum | Select-Object -ExpandProperty Sum } } function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } # Get all disks $Disks = Get-PhysicalDisk # Get any SSD's that have Write Errors, to hot, or Wear level over 10% $UnhealthySSDDisks = $Disks | Where-Object { $_.MediaType -like "SSD" -and $_.PhysicalLocation -notlike "*.vhd*" } | Get-StorageReliabilityCounter | Where-Object { ( $null -ne $_.WriteErrorsTotal -and $_.WriteErrorsTotal -ge 1 # Any amount for an SSD is a cause for concern ) -or ( $null -ne $_.Wear -and # The storage device wear indicator, in percentage. At 100 percent, the estimated wear limit has been reached. # https://learn.microsoft.com/en-us/windows-hardware/drivers/storage/msft-storagereliabilitycounter $_.Wear -ge $WearLevelPercentMax ) } $DeviceIds = $UnhealthySSDDisks | Sort-Object -Property DeviceId -Unique | Select-Object -ExpandProperty DeviceId $DriveCount = Write-UnhealthyDisk -Disks $DeviceIds if ($DeviceIds.Count -and $DriveCount) { Write-Host "WARNING: $($DeviceIds.Count) disks were found with wear level above $WearLevelPercentMax%." exit 1 } Write-Host "No disks were found with wear level above $WearLevelPercentMax%." exit 0 } end { }
Greifen Sie auf über 300 Skripte im NinjaOne Dojo zu.
Detaillierte Aufschlüsselung
Das Skript arbeitet in mehreren Stufen:
- Konfiguration der Parameter: Zunächst wird der Parameter WearLevelPercentMax definiert, der standardmäßig auf 80 % eingestellt ist. Dies ist der Schwellenwert, bei dem eine SSD als abgenutzt gilt.
- Umgebungsprüfung: Das Skript prüft, ob es mit Administratorrechten ausgeführt wird, was für den Zugriff auf physische Festplatteninformationen erforderlich ist.
- Bewertung des Zustands: Anschließend werden Informationen über die einzelnen physischen Festplatten abgerufen, wobei der Schwerpunkt auf SSDs liegt, und deren Verschleiß- und Fehlerraten ausgewertet. Es wird speziell nach Schreibfehlern und einer prozentualen Abnutzung über dem angegebenen Schwellenwert gesucht.
- Berichterstellung: Das Skript gibt den Gesundheitszustand jeder SSD aus, mit Angaben zu Verschleißgrad, Temperatur und Schreibfehlern.
- Entscheidungsfindung: Auf der Grundlage dieser Informationen gibt er Warnungen aus oder bestätigt den gesunden Zustand der SSDs.
Mögliche Anwendungsfälle
Ein IT-Administrator in einem mittelständischen Unternehmen verwendet dieses Skript im Rahmen der routinemäßigen Wartung. Er plant, dass es monatlich ausgeführt wird, um eine frühzeitige Erkennung von SSD-Verschleiß zu gewährleisten und unerwartete Ausfälle zu verhindern, die den Geschäftsbetrieb stören könnten.
Vergleiche
Traditionell wird der Zustand von SSDs mit herstellerspezifischen Tools oder Software von Drittanbietern überwacht. Diese Tools sind zwar effektiv, aber das mitgelieferte PowerShell-Skript bietet einen stärker integrierten Ansatz, der Automatisierung und benutzerdefinierte Schwellenwerteinstellungen ermöglicht.
FAQs
- Kann dieses Skript auf jeder Windows-Version ausgeführt werden?
- Es erfordert Windows 10 oder Server 2016 und höher.
- Was ist, wenn meine SSD die Meldung des Verschleißgrads nicht unterstützt?
- Einige SSDs melden möglicherweise nicht alle erforderlichen Details, vielleicht aufgrund von Hardware- oder Konfigurationsbeschränkungen.
- Ist der Einsatz in einer Produktionsumgebung sicher?
- Ja, aber es wird empfohlen, es zuerst in einer Staging-Umgebung zu testen.
Folgen
Eine falsche Interpretation der Skriptausgabe kann zum vorzeitigen Austausch von SSDs oder zur Vernachlässigung eines defekten Laufwerks führen, was beides auf unterschiedliche Weise teuer ist. Der Schlüssel zu einer fundierten Entscheidungsfindung liegt darin, die Bewertung und die Schwellenwerte des Skripts zu verstehen.
Empfehlungen
- Regelmäßig laufen lassen: Planen Sie die regelmäßige Ausführung des Skripts für die laufende Überwachung.
- Kontextuelle Analyse: Berücksichtigen Sie neben den Ergebnissen des Skripts auch andere Gesundheitsindikatoren und Nutzungsmuster.
- Firmware aktualisieren: Stellen Sie sicher, dass Ihre PowerShell-Version und die SSD-Firmware auf dem neuesten Stand sind.
Abschließende Überlegungen
Im Zusammenhang mit der Überwachung des SSD-Zustands kann ein Tool wie NinjaOne die Fähigkeiten des Skripts ergänzen. NinjaOne bietet umfassende IT-Management-Lösungen, einschließlich Überwachung und Benachrichtigung, die sich nahtlos in Skripte wie dieses integrieren lassen, um einen ganzheitlichen Ansatz für den Zustand der IT-Infrastruktur zu erhalten. Dieses Skript ist ein Schritt in Richtung proaktives Systemmanagement, ein Prinzip, das mit der Philosophie von NinjaOne übereinstimmt, und zwar, Fehler zu vermeiden, bevor sie zu Problemen werden.