2013-07-30 6 views
2

J'ai trouvé un code très agréable sur la façon d'afficher les connexions des utilisateurs des 14 derniers jours: Powershell Security Log Get-EventLogFiltrage des nouveaux enregistrements d'événements de sécurité

$Date = [DateTime]::Now.AddDays(-14) 
$Date.tostring("MM-dd-yyyy"), $env:Computername 
$eventList = @() 
Get-EventLog "Security" -After $Date ` 
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
    | foreach-Object { 
     $row = "" | Select UserName, LoginTime 
     $row.UserName = $_.ReplacementStrings[5] 
     $row.LoginTime = $_.TimeGenerated 
     $eventList += $row 
     } 
$eventList 

Mais ma question est, comment puis-je modifier ce code afin qu'il sélectionne les deux derniers enregistrements?

J'ai essayé les éléments suivants:

Get-EventLog "Security" -After $Date ` 
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
| {-Newest 2} 

Et j'obtiens l'erreur: Missing expression after unary operator '-'.

Qu'est-ce qu'un moyen propre pour obtenir les deux dernières connexions, à savoir la connexion en cours et la dernière personne qui est connecté avant l'utilisateur actuel?

EDIT: Problème résolu, voici le code complet

$Date = [DateTime]::Now.AddDays(-14) 
$Date.tostring("MM-dd-yyyy"), $env:Computername 
$eventList = @() 
Get-EventLog "Security" -After $Date ` 
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
    | Select-Object -First 2 ` 
    | foreach-Object { 
     $row = "" | Select UserName, LoginTime 
     $row.UserName = $_.ReplacementStrings[5] 
     $row.LoginTime = $_.TimeGenerated 
     $eventList += $row 
     } 
$eventList 

Répondre

4

Au lieu de:

| {-Newest 2} 

Essayez ceci:

| Select-Object -first 2 
+0

Mais ce filtre tous les journaux de sécurité d'événements. Je cherche à filtrer tous les journaux d'événements de sécurité où l'ID d'événement est 4624 aux deux premiers. Si je place -Newest en premier, il sélectionne les deux premiers journaux d'événements de sécurité, et si l'un de ces deux est l'ID d'événement de 4624, seulement alors il affiche. AIDEZ-MOI!!! – Glowie

+0

Essayez Select-Object -First 2 à la place – TheOptimusPrimus

+0

Je ne peux pas réellement exécuter la commande parce que je n'ai pas de droits d'administrateur sur ma boîte :( – TheOptimusPrimus

Questions connexes