Get-WinEvent Obtenir L'Ouverture De Session Interactive Des Messages Uniquement
Je suis d'essayer d'obtenir cette PS script va tirer le journal de Sécurité de plusieurs machines et seulement de rechercher l'ID de l'Événement de 4624 et seulement me montrer les journaux qui contiennent "Type de Connexion: 2" ou d'ouverture de session interactive. J'ai tout le reste fonctionne sauf pour la partie de l'obtention seulement de ces journaux pour l'ouverture de session interactive uniquement. Voici une capture de mon script, si quelqu'un a une idée de comment obtenir ce que ça va, il serait grandement apprécié. Si je prends les 2 de "Type de Connexion", il fonctionne et j'ai tout avoir, mais si j'ai quelque chose après qu'il ne repousse pas les erreurs, mais il n'a pas donné de résultats. Oui, j'ai vérifié que j'ai d'ouverture de session interactive des événements au cours de ma filtré calendrier. Merci.
$serveur; Obtenez-WinEvent -computername $server -FilterHashTable @{Logname=$logname;ID=$id de l'événement;StartTime=$starttime;EndTime=$endtime} | where { $_.Message | Select-String "Type De Connexion: 2" }
Tim
Vous devez vous connecter pour publier un commentaire.
EventRecord.propriétés ont le type de connexion dans la liste. Pour filtrer ouverture de session réussie des événements d'ouverture de session interactive type pour aujourd'hui:
Pour info au cas où quelqu'un d'autre tente de faire la même chose, il a besoin de plus d'espace après le "Type de Connexion:" Il voulais qu'il ressemble à il ne dans le journal iteself, "Type de Connexion: 2" je ne suis pas sûr de la façon de contourner ce problème en powershell, mais ça a fait l'affaire pour moi.
J'ai travaillé sur plusieurs approches à ce problème. Je pensais qu'ils pourraient être utiles depuis l'identification des types de connexion est important. -RMF
Get-WinEvent -max 1000 | where { $_.Message | findstr /C:"Type de Connexion"} | Select Message | fl * | findstr /C:"Type de Connexion"
Type D'Ouverture De Session: 5
Type De Connexion: 7
...
Get-WinEvent de Sécurité -max 1000| Select ID,le Niveau,le Message | where { $_.Message | findstr /C:"Type de Connexion"} | ft -auto -wrap | plus
Id De Message De Niveau
4624 0 Un compte a été connecté avec succès.
....
Get-WinEvent -max 10 -FilterHashtable @{Logname='sécurité';ID=4624} | Sélectionnez TimeCreated,MachineName,Message | ft -auto -wrap | plus
TimeCreated MachineName Message
----------- ----------- -------
6/29/2011 12:36:35 PM (supprimé) Un compte a été connecté avec succès.
...
Get-WinEvent -max 10 -FilterHashtable @{Logname='sécurité';ID=4624} | Sélectionnez TimeCreated,MachineName,Message | Select-string "Type de Connexion" | plus
@{TimeCreated=06/29/2011 12:36:35; MachineName=(supprimé); Message=Un compte a été connecté avec succès.
...
Cette dernière approche fouilles sélectionnez informations sur le Message d'ouverture de session de l'événement, ajoute le TimeCreated champ et donne quelque chose comme un format de base de données pour toutes les tentatives d'ouverture de session (Id=4624) dans le journal de sécurité. Les résultats sont ajoutés à un fichier csv.
$LogonTypes=Get-WinEvent -FilterHashtable @{Logname='sécurité';Id=4624}
foreach ($item $ $LogonTypes) {($item | Sélectionnez TimeCreated, Message | fl * | findstr /G:search.lst) -remplacer" ","" -jointure "," | hors-fichier -ajouter test3.csv }
où (en colonnes) de recherche.lst :
TimeCreated
ID de sécurité:
Nom Du Compte:
Domaine Du Compte:
ID d'ouverture de session:
Type D'Ouverture De Session:
GUID d'ouverture de session:
Nom Du Processus:
La solution au problème de la façon de faire correspondre l'espace blanc entre le point-virgule et le numéro 2 dans le premier exemple de code en haut de cet article est d'utiliser PowerShell modèle d'expression régulière écrit comme ceci
\s+
.Le modèle de caractères sont sensibles à la casse et généralement utilisé avec le "match" de l'opérateur, mais peuvent être utilisées efficacement avec le Select-String commandlet comme écrit dans l'affiche de la requête d'origine. La modification de code devrait ressembler à ceci:
En outre, si le script PowerShell doit interroger les anciens systèmes d'exploitation qui utilisent encore les classiques des journaux d'événements, la
Get-EventLog
commandlet peuvent être également employés avec le même motif, comme illustré ici:PowerShell expression régulière références:
https://technet.microsoft.com/en-us/magazine/2007.11.powershell.aspx
https://www.petri.com/powershell-string-parsing-with-regular-expressions
Remarque: l'expression régulière pattern référencées dans cette réponse, c'est décrite par Microsoft comme un
“character class”
.Clark Froebe