Die wichtigsten Punkte
- Sicheres Remoting aktivieren: Führen Sie Enable-PSRemoting per Gruppenrichtlinie aus und konfigurieren Sie WinRM für HTTPS (Port 5986) mit Kerberos oder Zertifikaten, damit die Kommunikation im Netzwerk verschlüsselt erfolgt.
- Das „Double-Hop“-Problem lösen: Nutzen Sie Resource-Based Constrained Delegation oder ein gMSA, wenn Ihr Skript auf eine zweite entfernte Ressource (etwa eine Dateifreigabe) zugreifen muss, um Berichte oder Protokolle zu speichern.
- Moderne Klassen abfragen: Verwenden Sie Get-CimInstance (statt des veralteten Get-WmiObject), um Hardwaredaten aus Klassen wie Win32_LogicalDisk, Win32_Processor und Win32_PhysicalMemory abzurufen.
- Im großen Stil ausführen: Setzen Sie Invoke-Command mit dem Parameter -ThrottleLimit ein, um zu steuern, wie viele Rechner gleichzeitig geprüft werden, und so Netzwerksättigung oder Speicherabstürze zu vermeiden.
- Berichterstattung modernisieren: Nutzen Sie für E-Mail-Alarmierungen die Microsoft Graph API (Send-MgUserMail), um moderne Authentifizierung zu unterstützen, und exportieren Sie Daten mit ConvertTo-Json für langfristige Trendanalysen in Dashboards.
- Automatisieren und härten: Planen Sie Skripte über die Aufgabenplanung mit sicheren Anmeldeinformationen und bauen Sie Try/Catch-Blöcke sowie Test-Connection ein, damit das Skript offline erreichbare Endpunkte sauber abfängt.
Mit Remote PowerShell lässt sich der Gerätezustand überwachen und die Systemdiagnose unternehmensweit automatisieren, und zwar über WMI-Abfragen und das Sammeln von Leistungsindikatoren. Solche Lösungen helfen Ihnen dabei, Hardware-Ausfälle, nachlassende Leistung und Dienstunterbrechungen zu erkennen, bevor sie den Geschäftsbetrieb beeinträchtigen.
Entfernte PowerShell für Gerätezustandsprüfungen einrichten
Die Remote-Ausführung von PowerShell setzt voraus, dass sowohl Quell- als auch Zielsysteme korrekt konfiguriert sind, damit sichere Kommunikationskanäle entstehen. Der Dienst Windows Remote Management muss auf allen überwachten Geräten aktiviert und so konfiguriert sein, dass er eingehende PowerShell-Sitzungen annimmt. Authentifizierungsmechanismen wie Kerberos und NTLM sorgen dafür, dass Anmeldeinformationen bei Remote-Vorgängen sicher übertragen werden.
Sicheren Fernzugriff per PowerShell konfigurieren
Um die Überwachung des Gerätezustands per Remote PowerShell im großen Maßstab einzurichten, müssen Sie zunächst den Fernzugriff auf allen Zielrechnern konfigurieren.
Gehen Sie dazu folgendermaßen vor:
- Administrative Einrichtung für Remote PowerShell: Führen Sie das Cmdlet Enable-PSRemoting auf jedem Zielsystem aus, um Remote-PowerShell-Verbindungen zu konfigurieren.
- WinRM-Dienst-Listener konfigurieren: PowerShell erstellt einen HTTP-Listener auf Port 5985. Für eine sicherere Kommunikation und gemäß Best Practices konfigurieren Sie einen HTTPS-Listener auf Port 5986 mit einem gültigen TLS-Zertifikat. Mit winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=“<hostname>“; CertificateThumbprint=“<thumbprint>“} erstellen Sie bei Bedarf manuell einen sicheren Listener.
- Administrativen Zugriff prüfen: Vergewissern Sie sich, dass Sie auf jedem überwachten Gerät über Administratorrechte verfügen, bevor Sie die Konfigurationsbefehle ausführen. Die Einrichtung von Remote PowerShell erfordert erhöhte Rechte, um Systemeinstellungen und Sicherheitsrichtlinien zu ändern.
- Authentifizierung und Zugriff absichern: Verwenden Sie Kerberos-Authentifizierung für in die Domäne eingebundene Systeme und zertifikatsbasierte Authentifizierung für Umgebungen ohne Domäne. Vermeiden Sie NTLM oder Standardauthentifizierung nach Möglichkeit.
- Per Gruppenrichtlinie domänenweit bereitstellen: Bei mehreren in die Domäne eingebundenen Systemen nutzen Sie die Gruppenrichtlinien-Bereitstellung, um Enable-PSRemoting netzwerkweit gleichzeitig auszuführen.
Profi-Tipp: Das „Double-Hop“-Problem lösen
Das ist der häufigste Grund, warum Remote-Skripte im Produktivbetrieb scheitern. Wenn Ihr Skript zur Zustandsprüfung auf eine Netzwerkfreigabe zugreifen muss, um einen Bericht zu speichern oder eine Datei abzurufen, schlägt es fehl, weil Anmeldeinformationen nicht über den ersten Remote-Hop hinaus weitergereicht werden.
Das Szenario: Sie führen ein Skript von Rechner A auf Rechner B aus. Versucht Rechner B anschließend, Rechner C zu erreichen (etwa einen zentralen Dateiserver oder eine Datenbank), wird die Verbindung verweigert, weil Rechner B Ihre Identität nicht erneut verwenden kann.
Die Lösung: Nutzen Sie dafür Resource-Based Constrained Delegation (RBCD) oder führen Sie das Skript über ein Group Managed Service Account (gMSA) aus. So erhält die Remote-Sitzung die nötigen Netzwerkberechtigungen, um das endgültige Ziel zu erreichen.
Get-CimInstance für die Hardware-Diagnose nutzen
Das Cmdlet Get-CimInstance ersetzt die ältere Funktionalität von Get-WmiObject beim Abfragen von Klassen des Common Information Model (CIM) auf lokalen und entfernten Systemen. Das sorgt für zuverlässigere Hardware-Diagnosen und einen besseren Abruf von Systeminformationen.
Nutzen Sie diese zentralen CIM-Klassen, um Hardware-Daten zu erfassen:
- Speicherplatz abfragen: Die Klasse Win32_LogicalDisk liefert Informationen zum Speicherplatz, darunter Größe, freier Speicher und Dateisystemtyp, um die Speicherkapazität über alle logischen Laufwerke hinweg zu überwachen.
- CPU-Zustand überwachen: Die Klasse Win32_Processor gibt CPU-Spezifikationen, Auslastung in Prozent und (sofern unterstützt) den Temperaturstatus zurück, für eine umfassende Bewertung des Prozessorzustands und die Leistungsverfolgung.
- Arbeitsspeicherstatus prüfen: Die Klasse Win32_PhysicalMemory liefert Details zu den Speichermodulen, darunter Kapazität, Geschwindigkeit und Fehlerkorrekturfunktionen, für eine vollständige RAM-Diagnose und Kapazitätsplanung.
Ein PowerShell-Skript auf einem entfernten Gerät ausführen
Das Cmdlet Invoke-Command führt PowerShell-Befehle und Skriptblöcke gleichzeitig auf einem oder mehreren entfernten Computern aus. Für wiederholte Vorgänge gegen dieselben Zielsysteme richtet das Cmdlet mit New-PSSession temporäre oder dauerhafte Sitzungen ein.
Leistung im großen Maßstab steuern
Wenn Sie Invoke-Command gegen eine große Zahl von Computern einsetzen, verwenden Sie den Parameter -ThrottleLimit. Standardmäßig begrenzt PowerShell die gleichzeitigen Verbindungen auf 32.
In großen Unternehmensumgebungen können Sie diesen Wert auf 50 oder 100 erhöhen, um Ihre Zustandsprüfungen zu beschleunigen, vorausgesetzt, Ihre Management-Station verfügt über genügend CPU und RAM für die gleichzeitigen WinRM-Sitzungen. Stellen Sie umgekehrt Netzwerklatenz fest, kann ein niedrigerer Wert die unmittelbare Last auf Ihrer Infrastruktur verringern.
Nutzen Sie diese zentralen Parameter, um Skripte per Remote auszuführen:
- Zielsysteme angeben: Der Parameter ComputerName akzeptiert einzelne Hostnamen, IP-Adressen oder Arrays für Massenvorgänge über mehrere Geräte hinweg.
- Dauerhafte Sitzungen aufbauen: New-PSSession erstellt temporäre oder dauerhafte Sitzungen für wiederholte Vorgänge gegen dieselben Zielsysteme.
- Authentifizierung konfigurieren: Der Parameter Credential ermöglicht die Authentifizierung mit alternativen Benutzerkonten, die über die passenden Berechtigungen auf den Zielsystemen verfügen.
Umfassende Skripte zur Gerätezustandsprüfung für Windows PowerShell erstellen
PowerShell-Skripte zur Zustandsüberwachung fassen mehrere Diagnosebefehle zu zusammenhängenden Workflows zusammen, die den Systemstatus umfassend bewerten. Die Skriptentwicklung folgt modularen Designprinzipien, damit sich wiederverwendbare Funktionen für bestimmte Überwachungsaufgaben nutzen lassen. Mechanismen zur Fehlerbehandlung sorgen dafür, dass die Skriptausführung trotz einzelner fehlgeschlagener Befehle oder Verbindungsprobleme fortgesetzt wird.
Zustand in PowerShell prüfen
Skripte zur Prüfung des Gerätezustands per Remote PowerShell nutzen bedingte Logik, um die erfassten Metriken mit vordefinierten Schwellenwerten abzugleichen. Mit Get-CimInstance Win32_PerfRawData_PerfOS_Processor rufen Sie die Rohdaten zur Prozessorleistung ab, um daraus die Auslastung zu berechnen. Vergleichsoperatoren wie -gt, -lt und -eq ermöglichen schwellenwertbasierte Alarmierungen, sobald Metriken die akzeptablen Bereiche überschreiten. Hashtabellen speichern mehrere Systemmetriken, damit Verarbeitung und Berichterstellung innerhalb eines einzigen Skriptdurchlaufs effizient ablaufen.
Leistungsindikatoren und Ereignisse überwachen
Das Cmdlet Get-Counter unterstützt über den Parameter SampleInterval eine kontinuierliche Überwachung der Leistung mit wiederholten Messungen über festgelegte Zeiträume. Das Cmdlet Get-WinEvent fragt Einträge im Windows-Ereignisprotokoll ab und nutzt dafür den Parameter FilterHashtable, um gezielt bestimmte Ereignisse abzurufen. Der Parameter MaxEvents begrenzt die Ergebnismenge, damit die Protokollanalyse nicht übermäßig viel Arbeitsspeicher verbraucht.
Fehlerbehandlung in Ihre Skripte einbauen
Try-Catch-Finally bietet eine strukturierte Ausnahmebehandlung für PowerShell-Skripte, die gegen möglicherweise nicht erreichbare Remote-Systeme laufen. Das Cmdlet Write-Error erzeugt nicht abbrechende Fehler, sodass das Skript nach einzelnen fehlgeschlagenen Befehlen weiterläuft. Die automatische Variable $Error enthält Fehlerobjekte für eine detaillierte Ausnahmeanalyse und die Protokollierung.
Wiederkehrende Gerätezustandsprüfungen per Remote automatisieren
Mit Aufgabenplanung führen Sie Ihre PowerShell-Skripte zur Zustandsüberwachung automatisiert nach einem festen Zeitplan aus, ganz ohne manuelles Eingreifen. Die Integration mit der Windows-Aufgabenplanung bietet Ihnen robuste Planungsfunktionen, inklusive Wiederholungslogik und Benachrichtigungen bei Fehlern. Die Verwaltung der Anmeldeinformationen stellt zudem sicher, dass automatisierte Skripte mit den passenden Berechtigungen für den Zugriff auf entfernte Systeme ausgeführt werden.
Aufgaben mit schtasks-Befehlen planen
Mit dem Kommandozeilenprogramm schtasks.exe planen Sie PowerShell-Skripte so, dass sie zeitgesteuert oder bei bestimmten Systemereignissen automatisiert ausgeführt werden. Der Parameter /create richtet eine neue Aufgabe mit definiertem Namen, Trigger und Ausführungsdetails ein. Über den Parameter /sc legen Sie fest, wie oft die Aufgabe läuft, ob minütlich, stündlich, täglich oder wöchentlich. Mit dem Parameter /ru führen Sie die Aufgabe unter einem bestimmten Benutzerkonto aus, das die nötigen Netzwerk- und Systemberechtigungen besitzt.
Wiederkehrende Remote-Gerätezustandsprüfungen konfigurieren
Zur Authentifizierung geplanter PowerShell-Skripte verwenden Sie gespeicherte Anmeldeinformationen oder Group Managed Service Accounts (gMSAs). Verschlüsseln Sie Passwörter mit ConvertTo-SecureString und hinterlegen Sie sie in PSCredential-Objekten, um Benutzernamen sicher mit verschlüsselten Passwörtern zu kombinieren. Speichern Sie diese Anmeldeinformationen in der Windows-Anmeldeinformationsverwaltung, damit sowohl geplante Aufgaben als auch manuelle Sitzungen darauf zugreifen können, ohne sensible Daten offenzulegen.
Bedingte Logik für Alarmierungen umsetzen
Nutzen Sie bedingte Logik in PowerShell, um zu steuern, wann Alarmierungen auf Basis der Schwellenwerte Ihrer Zustandsprüfungen ausgelöst werden. Mit if- und switch-Anweisungen bewerten Sie mehrere Schweregrade und definieren die passenden Reaktionen. Verfolgen Sie Alarmbedingungen mit booleschen Flags, um doppelte Benachrichtigungen aus verwandten Metriken zu vermeiden. Über Zeitstempelvergleiche drosseln Sie Alarmierungen, indem Sie einen Mindestabstand zwischen Benachrichtigungen zum selben Problem erzwingen und so einer Alarmmüdigkeit vorbeugen.
Testen und validieren
Testen Sie Ihre PowerShell-Skripte vor der Bereitstellung anhand realistischer Szenarien und repräsentativer Zielsysteme. Prüfen Sie mit Test-Connection die Netzwerkverbindung, um unnötige Timeouts bei Remote-Vorgängen zu vermeiden. Mit dem Parameter WhatIf sehen Sie sich die Aktionen eines Skripts gefahrlos vorab an, ohne Änderungen vorzunehmen. Für tiefere Einblicke beim Testen aktivieren Sie Write-Verbose, um ausführliche Protokolle zu erzeugen, die bei der Fehlersuche und Leistungsanalyse helfen.
Über Gerätezustandsprobleme berichten und darauf reagieren
Automatisieren Sie Ihre Berichterstattung, um aus Rohdaten zum Gerätezustand verwertbare Erkenntnisse für Admins und Management zu machen. Richten Sie E-Mail-Benachrichtigungen ein, die kritische Probleme sofort melden, wenn dringender Handlungsbedarf besteht. Nutzen Sie strukturierte Berichtsformate, um Trends über die Zeit zu verfolgen und die Kapazitätsplanung fundierter zu gestalten.
Send-MailMessage für automatisierte Zustandsberichte
Mit der Microsoft Graph API und dem Cmdlet Send-MgUserMail versenden Sie die Ergebnisse Ihrer Zustandsprüfungen und Alarmdetails automatisiert per E-Mail an festgelegte Empfänger:innen.
Moderner E-Mail-Versand mit Microsoft Graph
Um Berichte über Microsoft 365 zu versenden, nutzen Sie das Cmdlet Send-MgUserMail. Das ist der moderne Standard, denn das ältere Send-MailMessage ist inzwischen veraltet und unterstützt keine MFA (Multi-Factor Authentication).
Hinweis: Dafür wird die Berechtigung Mail.Send im Microsoft Graph SDK benötigt.
PowerShell
M
$params = @{
Message = @{
Subject = „Daily Health Report – $($env:COMPUTERNAME)“
Body = @{
Content = $htmlBody
ContentType = „html“
}
ToRecipients = @(
@{
EmailAddress = @{
Address = „[email protected]“
}
}
)
}
}
Send-MgUserMail -BodyParameter $params
Legen Sie Absender- und Empfängeradressen mit From und To fest. Füllen Sie Body mit formatierten Zusammenfassungen, die Systemnamen, wichtige Metriken und etwaige Schwellenwertüberschreitungen enthalten. So sehen Admins kritische Probleme sofort.
Aussagekräftige Zusammenfassungen zum Gerätezustand erstellen
Die Berichterstellung in PowerShell führt mehrere Datenquellen zu umfassenden Zusammenfassungen mit Prioritätsklassifizierung zusammen, damit Administrator:innen effizient reagieren können. Das Cmdlet ConvertTo-Html wandelt PowerShell-Objekte in formatierte HTML-Tabellen um, die sich für den E-Mail-Text eignen. CSS-Formatierungen verbessern die Lesbarkeit der Berichte durch Farbcodierung und bedingte Formatierung je nach Schweregrad der Alarmierung. Das Cmdlet Export-Csv erzeugt kommaseparierte Dateien für die Analyse historischer Daten und die Trendberichterstattung in externen Anwendungen.
Ihre Daten zukunftssicher machen
HTML eignet sich ideal für sofortige E-Mail-Alarmierungen. Ziehen Sie zusätzlich ConvertTo-Json in Ihren Workflow ein und leiten Sie die Ausgabe an Out-File weiter, um einen lokalen Datensatz oder einen im Netzwerk zu speichern.
Indem Sie Zustandsdaten im JSON-Format ablegen, lassen sich diese Metriken problemlos in Visualisierungstools wie Power BI, Grafana oder eine zentrale SQL-Datenbank einspeisen. So verfolgen Sie Trends bei nachlassender Hardware, etwa einen stetig steigenden Speicherverbrauch oder zunehmende Festplattenfragmentierung, über Monate hinweg, statt nur auf tägliche Alarmierungen zu reagieren.
Überwachung des Systemzustands vereinfachen
Mit NinjaOne war es nie einfacher, den Zustand Ihrer Systeme im Blick zu behalten, dank all der Möglichkeiten, die Ihnen zur Verfügung stehen. Tools wie NinjaOne zentralisieren und automatisieren die Überwachung und lassen Sie sich auf das konzentrieren, was wirklich zählt: einen reibungslosen Betrieb Ihrer Systeme. Starten Sie noch heute mit NinjaOne und erleben Sie den Unterschied in Ihrem IT-Management. Testen Sie es noch heute kostenlos!
Quick-Start-Guide
Funktionen für Zustandsprüfungen
– NinjaOne bietet mehrere integrierte Skripte für Systemzustandsprüfungen, darunter:
, Systemleistungsprüfung
, Audit-Skripte (Firewall-Status, PowerShell-Version usw.)
, Bedingungsbasierte Alarmierungen
, Überwachung von Problemen beim Gerätezustand
Planung und Berichterstattung
– Sie können geplante Automatisierungen mit verschiedenen Optionen erstellen:
, Alle X Stunden/Minuten ausführen
, Beim Systemstart ausführen
, Bei der Benutzeranmeldung ausführen
, Einmalig oder sofort ausführen
Beispiele für Skripte zur Zustandsprüfung
– Systemleistungsprüfung: Erfasst Daten zu CPU, Arbeitsspeicher, Festplatte und Netzwerk
, Firewall-Status auditieren
, PowerShell-Version auditieren
, Zustandsüberwachung nach Bedingungen
, Überwachung des Ereignisprotokolls
Funktionen für die Berichterstattung
– Speicherung der Ergebnisse von Zustandsprüfungen in benutzerdefinierten Feldern
, Aktivitätsprotokollierung
, Dashboard-Ansichten zum Zustand der Geräte
, Exportmöglichkeiten nach CSV
Empfohlenes Vorgehen
1. Wählen Sie in der Automatisierungsbibliothek von NinjaOne passende Skripte für Zustandsprüfungen aus
2. Konfigurieren Sie die geplante Automatisierung in der gewünschten Häufigkeit
3. Richten Sie benutzerdefinierte Felder zum Speichern der Ergebnisse ein
4. Nutzen Sie das Dashboard, um den Gerätezustand zu überwachen und zu prüfen
