PowerShell-Skript-Guide zum Testen und Verlängern des SSD-Zustands in IT-Systemen

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.

Zugang erhalten

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.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).