Introduction
Script-Monitore sind nur so nützlich wie die Skripte dahinter. Diese Beispiele zeigen vollständige End-to-End-Konfigurationen – das Skript, die Monitor-Einstellungen und warum jede Entscheidung getroffen wurde – damit Sie sie unverändert bereitstellen oder als Ausgangspunkt für Ihre eigenen verwenden können.
Beispiel 1: Erkennung nicht autorisierter lokaler Administratoren
Dieser Monitor warnt, wenn ein Windows-Gerät ein lokales Administratorkonto hat, das nicht auf Ihrer genehmigten Liste steht – eine häufige Compliance- und Sicherheitsprüfung.
Das Skript vergleicht aktivierte lokale Admin-Konten mit einer autorisierten Liste, die in einem benutzerdefinierten Feld gespeichert ist (##{{cf_authorized_admins}} ). Wenn es jemanden findet, der nicht dort sein sollte, gibt es aus ALERT and exits with code 1.
PowerShell Script
$AuthorizedAdmins = "##{{cf_authorized_admins}}"
# Get all enabled local admin accounts
$admins = Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.ObjectClass -eq 'User' -and (Get-LocalUser $_.SID).Enabled -eq $true } |
Select-Object -ExpandProperty Name
# Strip domain prefix, normalize to lowercase
$admins = $admins | ForEach-Object { ($_ -split '\\')[-1] }
$detectedArray = ($admins -join ",") -split ',' | ForEach-Object { $_.Trim().ToLower() }
$authorizedArray = $AuthorizedAdmins -split ',' | ForEach-Object { $_.Trim().ToLower() }
# Find admins not in the authorized list
$unauthorizedAdmins = $detectedArray | Where-Object { $authorizedArray -notcontains $_ }
if ($unauthorizedAdmins.Count -gt 0) {
Write-Output "Unauthorized Admins ALERT: $($unauthorizedAdmins -join ',')"
exit 1
} else {
Write-Output "No unauthorized admins detected."
exit 0
}
Monitor configuration:
Field | Value |
Typ | Run script |
OS | Windows |
Script | Windows - Unauthorized Admins |
Script output | Contains |
Value |
|
Run frequency | 1 hour |
Trigger count | 1 |
Wenn ein nicht autorisierter Admin vorhanden ist, enthält die AusgabeALERT und der Monitor wird ausgelöst. Wenn die Kontoliste sauber ist, enthält die Ausgabe nicht ALERT and the monitor stays quiet.
💡 TIP: Set cf_authorized_adminsals benutzerdefiniertes Feld auf Gruppen- oder Organisationsebene, damit eine einzige verwaltete Liste alle Ihre Geräte abdeckt. Sie können sie pro Gerät überschreiben, wenn bestimmte Maschinen unterschiedliche Admin-Anforderungen haben.
Die Admin-Überwachungsrichtlinie importiert alles, was Sie brauchen, um diese Prüfung auf Windows, macOS und Linux auszuführen: drei vorkonfigurierte Monitore (eine pro Betriebssystem), alle drei Skripte, die Authorized Adminsbenutzerdefiniertes Feld und Workstation- und Server-Tags.
Example 2: Monitoring Device Uptime
Dieser Monitor warnt, wenn ein Gerät länger als 30 Tage ohne Neustart ausgeführt wurde – ein Zeichen, dass Patch-Zyklen möglicherweise verpasst wurden oder ein Gerät übersehen wird.
The script is a single osquery query:
osQuery Script
SELECT days FROM uptime;
osquery gibt die Anzahl der Tage seit dem letzten Boot als einfache Ganzzahl zurück. Der Monitor vergleicht diesen Wert direkt mit Greater than .
Monitor configuration:
Field | Value |
Typ | Run script |
OS | Windows (oder macOS / Linux – osquery ist plattformübergreifend) |
Script | OsQuery Monitor - Uptime |
Script output | Greater than |
Value |
|
Run frequency | 24 hours |
Trigger count | 1 |
Wenn die Betriebszeit 30 Tage überschreitet, wird der Monitor ausgelöst. Nach einem Neustart wird die Betriebszeit wieder unter 30 Tagen gebracht und die Warnung wird automatisch behoben.
Pairing this monitor with a Prompt User to Restart Die Automatisierung der Benachrichtigung bedeutet, dass der Benutzer direkt eine Benachrichtigung zum Neustart erhält – keine Techniker-Intervention erforderlich für den häufigen Fall.
💡 TIP: osquery wird auf Windows, macOS und Linux ausgeführt. Sie können drei separate Monitore erstellen – eine pro Betriebssystem – alle auf das gleiche Skript verweisend für plattformübergreifende Betriebszeit-Abdeckung.
Die Uptime-Überwachungsrichtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) und das Osquery Uptime-Skript – bereit zum Zuweisen zu einer Gruppe.
Beispiel 3: Überwachung der DNS-Serverkonfiguration
Dieser Monitor warnt, wenn ein Windows-Gerät DNS-Server verwendet, die nicht auf Ihrer genehmigten Liste stehen – nützlich zur Erkennung von Fehlkonfiguration, DHCP-Drift oder nicht autorisierten Änderungen.
Das Skript vergleicht die aktiven DNS-Server des Geräts mit einer in einem benutzerdefinierten Feld gespeicherten zulässigen Liste (##{{cf_dns}} ). Wenn eine Schnittstelle DNS-Server außerhalb der genehmigten Liste hat, wird ausgegeben ALERT and exits with code 1.
PowerShell Script
# Comma-separated list of expected DNS servers
$allowedDnsServers = "##{{cf_dns}}"
$allowedDnsServersArray = $allowedDnsServers -split "\s*,\s*"
function Check-DnsServers {
$networkInterfaces = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled }
foreach ($interface in $networkInterfaces) {
$dnsServers = $interface.DNSServerSearchOrder
Write-Host "Interface: $($interface.Description)"
Write-Host "Allowed DNS servers: $($allowedDnsServersArray -join ', ')"
Write-Host "Current DNS servers: $($dnsServers -join ', ')"
if ($dnsServers -ne $null -and $dnsServers.Count -gt 0) {
$matchingServers = @($dnsServers | Where-Object { $allowedDnsServersArray -contains $_ })
if ($matchingServers.Count -eq $dnsServers.Count) {
Write-Host "SUCCESS: DNS servers match the allowed list."
exit 0
} else {
Write-Host "ALERT: Not all DNS servers are in the allowed list."
exit 1
}
} else {
Write-Host "ALERT: No DNS servers configured"
exit 0
}
}
}
Check-DnsServers
Monitor configuration:
Field | Value |
Typ | Run script |
OS | Windows |
Script | Windows Monitor - DNS Servers |
Script output | Contains |
Value |
|
Run frequency | 1 hour |
Trigger count | 1 |
Wenn ein DNS-Server außerhalb der zulässigen Liste erkannt wird, enthält die Ausgabe ALERT zusammen mit dem Schnittstellennamen und den tatsächlich konfigurierten DNS-Servern – sichtbar in der Warnungs-Nutzlast zur schnellen Diagnose. Wenn alle Schnittstellen mit der zulässigen Liste übereinstimmen, wird keine Warnung ausgelöst.
💡 TIP: Set cf_dns als benutzerdefiniertes Feld auf Gruppenebene, damit verschiedene Standorte oder Kundenumgebungen ihre eigenen genehmigten DNS-Serverlisten haben können, ohne separate Monitor-Richtlinien zu erstellen.
Die DNS-Überwachungsrichtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) und das DNS-Überwachungsskript. Es richtet auch die cf_dnsbenutzerdefiniertes Feld ein, damit Sie genehmigte DNS-Server auf Gruppen- oder Geräteebene definieren können, ohne zusätzliche Konfiguration.
More Examples
The Level Library at level.io/libraryhat eine wachsende Sammlung von einsatzbereiten Skripten und Monitor-Richtlinien. Durchsuchen Sie nach Kategorie, um Monitore für Sicherheit, Festplattenzustand, Anwendungsstatus und mehr zu finden – oder reichen Sie Ihre eigenen ein.
FAQ
Muss ich das Skript erstellen, bevor ich es in einem Monitor verwenden kann? Ja – das Skript muss in Ihrer Skriptbibliothek gespeichert werden, bevor Sie es in einem Monitor auswählen können. Wenn Sie ein Skript aus der Level-Bibliothek importieren, wird es automatisch Ihrer Bibliothek hinzugefügt und ist sofort verfügbar.
Can I modify an imported script? Ja. Das Importieren erstellt eine Kopie in Ihrem Konto – Änderungen, die Sie vornehmen, beeinflussen nicht die ursprüngliche Bibliotheksressource oder andere Benutzer.
Der Import-Link führt mich zu einer Anmeldeseite. Ist das erwartet? Ja – Sie müssen angemeldet sein, um zu importieren. Nach der Anmeldung werden Sie zur Importbestätigung weitergeleitet.



