Voici un petit script qui va récupérer les machines de votre parc ayant un évent ID précis et placer le résulta dans un « .csv » . L’on peux y setter plusieurs paramètres comme l’OS , la date de dernière connexion sur les machines, le chemin d’accès du « .csv » et l’id de l’évent recherché.
Ce script nécessite d’avoir les cmdlets « activedirectory » d’installé.
### Script de listage des machines ayant un évent id spécifié ##### ### Moulherat Romain 27/05/2016 #### ### Récupération des machines à cibler ### ## Date de la dernière connexion ## $LastLogonDate = "01/01/2016" ## Nom de l'OS ## $OS = "*Windows 7*" ## Localisation dans le journal d'évenement ## $EventType = "system" ## Commande de récupération des machines ## $Computers = Get-ADComputer -Filter * -Properties OperatingSystem,name,LastLogonDate | Where-Object {$_.OperatingSystem -like $OS -and $_.LastLogOnDate -gt $LastLogonDate } ## Chemin d'acces au fichier .csv ### $path = "C:\Scripts\LogEvent.csv" foreach ($Machine in $Computers) { $CName = $Machine.Name ### Test de connexion à la machine ### if ( Test-Connection $CName -count 1 -delay 10 -quiet ) { $test = $null ### Délai de récupération du journal ### $date = (Get-Date) - (New-TimeSpan -Day 10) ### ID de l'évent ### $ID= "1058" Get-WinEvent -computername $CName -FilterHashTable @{LogName= $EventType; id= $ID ; StartTime= $date} -MaxEvents 1 -ErrorAction Ignore ### Si erreur il y a alors le log est absent donc la valeur de l'erreur ($?) est "false" ### $test=$? $test If ($test -eq "True") { Write-Host " $ID détecté sur $CName !" $CName | Out-file -FilePath $path -encoding ASCII -append } else { Write-Host " ok pour $CName " } } else { Write-host -nonewline " $CName non conectées" `n } }
Une fois les paramètres ajusté en fonction de vos besoins ce scripts met un peu temps à s’exécuter car il teste la connexion sur chacune des machines. Ensuit dans votre « .csv » vous aurez la liste des machines contenant l’évent demandé.