Introduction
Les moniteurs de script ne sont aussi utiles que les scripts derrière eux. Ces exemples montrent des configurations complètes de bout en bout – le script, les paramètres du moniteur et pourquoi chaque décision a été prise – afin que vous puissiez les déployer tels quels ou les utiliser comme point de départ pour les vôtres.
Exemple 1: Détection des administrateurs locaux non autorisés
Ce moniteur alerte lorsqu'un appareil Windows a un compte administrateur local qui ne figure pas sur votre liste approuvée – une vérification courante de conformité et de sécurité.
Le script compare les comptes d'administrateur local activés avec une liste autorisée stockée dans un champ personnalisé (##{{cf_authorized_admins}} ). S'il trouve quelqu'un qui ne devrait pas y être, il produit 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 |
Type | Run script |
OS | Windows |
Script | Windows - Unauthorized Admins |
Script output | Contains |
Value |
|
Run frequency | 1 hour |
Trigger count | 1 |
Lorsqu'un admin non autorisé est présent, la sortie contientALERT et le moniteur se déclenche. Lorsque la liste de comptes est propre, la sortie ne contient pas ALERT and the monitor stays quiet.
💡 CONSEIL : Set cf_authorized_adminscomme champ personnalisé au niveau du groupe ou de l'organisation pour qu'une liste unique maintenue couvre tous vos appareils. Vous pouvez le remplacer par appareil si des machines spécifiques ont des exigences d'administrateur différentes.
La politique de surveillance de l'administration importe tout ce qui est nécessaire pour exécuter cette vérification sur Windows, macOS et Linux: trois moniteurs préconfigurés (un par système d'exploitation), les trois scripts, le Authorized Adminschamp personnalisé et les balises de station de travail et de serveur.
Example 2: Monitoring Device Uptime
Ce moniteur alerte lorsqu'un appareil a été en cours d'exécution pendant plus de 30 jours sans redémarrage – un signal que les cycles de correctifs peuvent avoir été manqués ou qu'un appareil est négligé.
The script is a single osquery query:
osQuery Script
SELECT days FROM uptime;
osquery renvoie le nombre de jours depuis le dernier démarrage sous la forme d'un simple entier. Le moniteur compare cette valeur directement en utilisant Greater than .
Monitor configuration:
Field | Value |
Type | Run script |
OS | Windows (ou macOS / Linux – osquery est multiplateforme) |
Script | OsQuery Monitor - Uptime |
Script output | Greater than |
Value |
|
Run frequency | 24 hours |
Trigger count | 1 |
Lorsque le temps de fonctionnement dépasse 30 jours, le moniteur se déclenche. Après un redémarrage ramenant le temps de fonctionnement en dessous de 30 jours, l'alerte se résout automatiquement.
Pairing this monitor with a Inviter l'utilisateur à redémarrer L'automatisation des notifications signifie que l'utilisateur reçoit une notification directe pour redémarrer – aucune intervention du technicien nécessaire pour le cas courant.
💡 CONSEIL : osquery s'exécute sur Windows, macOS et Linux. Vous pouvez créer trois moniteurs distincts – un par système d'exploitation – tous pointant vers le même script pour une couverture du temps de fonctionnement multiplateforme.
La politique de surveillance du temps de fonctionnement importe trois moniteurs préconfigurés (Windows, macOS et Linux) et le script de temps de fonctionnement Osquery – prêt à assigner à un groupe.
Exemple 3: Surveillance de la configuration du serveur DNS
Ce moniteur alerte lorsqu'un appareil Windows utilise des serveurs DNS qui ne figurent pas sur votre liste approuvée – utile pour détecter les erreurs de configuration, la dérive DHCP ou les modifications non autorisées.
Le script compare les serveurs DNS actifs de l'appareil avec une liste autorisée stockée dans un champ personnalisé (##{{cf_dns}} ). Si une interface a des serveurs DNS en dehors de la liste approuvée, elle produit 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 |
Type | Run script |
OS | Windows |
Script | Windows Monitor - DNS Servers |
Script output | Contains |
Value |
|
Run frequency | 1 hour |
Trigger count | 1 |
Lorsqu'un serveur DNS en dehors de la liste autorisée est détecté, la sortie contient ALERT ainsi que le nom de l'interface et les serveurs DNS réellement configurés – visibles dans la charge utile d'alerte pour un diagnostic rapide. Lorsque toutes les interfaces correspondent à la liste autorisée, aucune alerte ne se déclenche.
💡 CONSEIL : Set cf_dns comme champ personnalisé au niveau du groupe pour que différents sites ou environnements clients puissent avoir leurs propres listes de serveurs DNS approuvés sans créer de politiques de moniteur distinctes.
La politique de surveillance DNS importe trois moniteurs préconfigurés (Windows, macOS et Linux) et le script de surveillance DNS. Il configure également le cf_dnschamp personnalisé pour que vous puissiez définir les serveurs DNS autorisés au niveau du groupe ou de l'appareil sans configuration supplémentaire.
More Examples
The Level Library at level.io/librarya une collection croissante de scripts et de politiques de moniteur prêts à importer. Parcourez par catégorie pour trouver des moniteurs de sécurité, de santé du disque, d'état de l'application, etc. – ou envoyez le vôtre.
FAQ
Dois-je créer le script avant de pouvoir l'utiliser dans un moniteur? Oui – le script doit être enregistré dans votre bibliothèque de scripts avant de pouvoir le sélectionner dans un moniteur. Si vous importez un script à partir de la bibliothèque Level, il est automatiquement ajouté à votre bibliothèque et disponible immédiatement.
Can I modify an imported script? Oui. L'importation crée une copie dans votre compte – les modifications que vous apportez n'affectent pas la ressource de bibliothèque d'origine ni les autres utilisateurs.
Le lien d'importation me mène à une page de connexion. Est-ce attendu? Oui – vous devez être connecté à Level pour importer. Après la connexion, vous serez redirigé vers la confirmation d'importation.



