Christophe RUIZ
Expert Microsoft SCCM
Troubleshooting ID Event
Approche :
L’objectif est de collecter les Event ID des postes présents dans une collection.
Pour effectuer une analyse avancée des Event ID liés à des anomalies affectant les postes de travail.
Nous allons prendre pour base d’exemple le container LSA présent dans le journal d’évènement dans « Microsoft-Windows-LSA/Operational« .
Puis pour cet exercice, nous allons extraire le contenu des évènements lié aux » IDEvent 300 « .
Nous pouvons constater que la rubrique « Message » contient du texte avec de nombreux retours chariot, ce qui va compliquer la sortis d’affichage.
Le résultat obtenu via les commandes PowerShell est tronqué en sortie.
Powershell est malheureusement limité en nombre de caractères
Un peu comme le nombre de caractères tolérer par Windows quand on renomme un fichier ou un dossier.
De par ses limitations, PowerShell pose un problème de formatage de texte.
Ce qui rend impossible le traitement de données par une Wquery ou une extraction du contenu dans un CSV.
En utilisant certain paramètre nous pouvons obtenir un résultat sous forme de tableau avec des retours chariot
Il nous faudra alors pour finir, inventorier et consigner dans un rapport les éléments collectés.
Les actions :
-
- Identification des solutions possibles via SCCM pour la récupération des données
Axe de réflexions
-
- DCM avec remédiation avec extraction des Events ID vers un fichier.CSV dans un Share folder
DCM avec remédiation
Développement des points forts et contraintes
Avantage :
-
- Automatisation envisageable pour une exploitation durable de la solution
- Intégration des données de la remédiation DCM dans une base SQL
- Traitement des données collectées par la solution PowerBI (étude complémentaire nécessaire)
Point d’information :
Il est possible d’évoluer sur le mécanisme alternatif suivant :
Pour chacun des postes de la collection, l’exportation des données serait stockée dans un fichier CSV
Le csv est créé par le script de remédiation de la DCM.
L’ensemble des fichiers collectés pourraient être stockés dans un sharefolder commun à toutes les entités clients.
Ensuite les données pourraient être consolidées dans un seul fichier CSV.
Pour terminer, nous pourrions envisager de traiter ses informations via un rapport PowerBI.
Contrainte :
- Mise en place d’un environnement adapté au besoin du projet (Création d’une base de données SQL, élagage de la base, solution PowerBI, stockage des données lié utilisateurs ‘’RGPD’’, autorisation ‘’Compte d’administration’’ …
- Développement de script PowerShell plus avancé
- Utilisation d’API ‘’Connecteur’’ Powershell to SQL (Adressage et compte de services Sql & Power BI)
- Création d’un rapport sur PowerBI
- Publication du rapport PowerBi via ‘’ messagerie, serveur web..’’
Activation du mode audit avancé
L’activation du mode audit est utilisée pour notre exemple, il permet d’activer la collecte des évents liés au conteneur LSA.
Script pour activer l’audit LSA
$PropertyType = « DWORD »
$logName = « Microsoft-Windows-LSA » + [char]47 + « Operational »
Reg Add « HKLM\SYSTEM\CurrentControlSet\Services\EventLog\$logName » /f | out-null
New-Item -Path « Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe » -erroraction silentlyContinue | out-null
Set-ItemProperty -Path « Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Lsass.exe » -Type $PropertyType -Name « AuditLevel » -Value « 8 » -force | out-null
$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration $logName
$log.IsEnabled=$true
$Query = Get-Item -Path « Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options » -erroraction silentlyContinue
if (!$query.IsPresent)
{
New-Item -Path « Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe » -erroraction silentlyContinue | out-null
Set-ItemProperty -Path « Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe » -Type $PropertyType -Name « AuditLevel » -Value « 8 » -force | out-null
}
Le script sera joué par une DCM sur l’ensemble
des collections ciblées.
Affichage de sortie
« Mode Bac à sable PowerShell »
Ø Affichage avec le container LSA du journal d’événement.
Get-WinEvent -LogName ‘Microsoft-Windows-LSA/Operational*’-FilterXPath ‘*[System[EventID=300]]’ | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message |
Format-Table -AutoSize
Commentaire : Les informations affichées sont tronquées, car le contenu de « Message » dépasse le nombre de caractères tolérés par Powershell.
Ø Affichage avec un autre container du journal d’événement.
Kernel-WHEA/Operational.
Get-WinEvent -LogName ‘Microsoft-Windows-Kernel-WHEA/Operational*’-FilterXPath ‘*[System[EventID=42]]’ | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message |
Format-Table -AutoSize
Commentaire : Le contenu présent dans la propriété « Message » est correctement formaté (sans retour chariot et moins de caractère) présent dans l’évent ID 300 de LSA.
Ø En utilisant le même script sans » Format-Table -AutoSize. «
Get-WinEvent -LogName ‘Microsoft-Windows-LSA/Operational’-FilterXPath ‘*[System[EventID=300]]’ | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message
Ø Script avec formatage de l’affichage ‘’Export File.CSV’
Get-WinEvent -LogName ‘Microsoft-Windows-LSA/operational’| Select-Object -Property TimeCreated, ID, ProviderName, LevelDisplayName, Message | Where-Object {$_.ID -eq 300 } | Export-Csv -path C:\Users\DT982466\Desktop\Test\Test.csv -Delimiter « ; » -Encoding Unicode
Commentaire :
L’affichage de sortie des données est structuré comme la capture d’écran à gauche le présente.
DCM avec remédiation
Le Script de la DCM
$EventID = (Get-EventLog Microsoft-Windows-LSA/Operational -after (get-date).AddDays(-7) | where {$_.InstanceId -eq 30000})
if ($EventID -eq $null)
{$Compliance = “No”}
Else
{$Compliance = “YES”}
$Compliance
Commentaire : Retour d’information celons l’ID Event présent sur le poste de travail.
Le script de la remédiation
* Script de base
Get-WinEvent -LogName ‘Microsoft-Windows-LSA/Operational*’| Select-Object -Property TimeCreated, ID, ProviderName, LevelDisplayName, Message | Where-Object {$_.ID -eq 300 }| Export-Csv -path C:\temp\Test3.csv -Delimiter « ; » -encoding utf8 -NoTypeInformation
Format de sortie
Commentaire :
L’exportation dans un CSV est plus aboutie en remplacent -Encoding Unicode par -encoding utf8 -NoTypeInformation
L’exportation des données dans le CSV est améliorée en utilisant la Table de codage « Utf8 »
Commentaires récents