Come filtrare il registro events di protezione di Windows tramite SID?

Vorrei filtrare il registro degli events per un determinato utente, ma non credo che esista un'opzione da eseguire per SAMID. C'è un filter da UserId però, secondo qui . La seguente syntax corretta è corretta per cercare l'utente nella schermata qui sotto?

 $events = get-winevent -filterhashtable @{ logname='security'; path="Archive-Security-2015-04-14-02-13-02-299.evtx"; UserId='S-1-5-21-220523388-838170752-839522115-yyyy' } 

eventi

Ottengo "Non sono stati trovati events che corrispondono ai criteri di selezione specificati." con il command di cui sopra. Ma se rimuovo la chiave UserId , viene restituita una lunga list, quindi non dovrebbe essere niente di sbagliato con il nome di logname o il path .

  • Come posso rimuovere gli events specifici dal registro events in Windows Server 2008?
  • Come si può sapere in che ora un utente di dominio si è connesso?
  • Molti errori di verifica: un account non è riuscito a accedere a entre nel registro di sicurezza
  • Utilizzando PowerShell, confrontare i valori TimeCreated di due events e agire se uno è più vecchio rispetto all'altro
  • Qual è il danno nel dare agli sviluppatori l'accesso all'accesso ai registri events applicativi del server applicazioni?
  • Creare un nuovo souver di events in Windows Server 2008
  • Evento Kernel-Power each 15 minuti
  • Che cos'è il secchio di guasto e devo preoccuparmi?
  • 2 Solutions collect form web for “Come filtrare il registro events di protezione di Windows tramite SID?”

    Utilizza invece l'opzione -FilterXPath !

    Nell'esempio seguente, ho salvato tutti gli events dal registro di sicurezza sulla mia macchina a seclog.evtx sul desktop e cercato gli events con OggettoSserSid S-1-5-18 ( LOCAL SYSTEM ):

     $events = Get-WinEvent -Path "$HOME\Desktop\seclog.evtx" -FilterXPath '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]' 

    In uno script, probabilmente scegliere una tabella di splatting per rendere l'istruzione un po 'più leggibile (qui limitata agli ultimi 10 events):

     $seclogSplat = @{ 'Path' = "$HOME\Desktop\seclog.evtx" 'FilterXPath' = '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]' 'MaxEvents' = 10 } $events = Get-WinEvent @seclogSplat 

    È ansible specificare più criteri non esclusivi con or :

     *[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18" or Data[@Name="SubjectUserSid"] = "S-1-0-0"]] 

    Non so di build in modo da scoprire se esiste un UserID specifico.
    Tuttavia, puoi semplicemente corrispondere al contenuto del messaggio per trovare il tuo SiD, in quanto dovrebbe essere univoco:

    $ events = get-winevent -logname security-path "Archivio-Sicurezza-2015-04-14-02-13-02-299.evtx" | where {$ _. messaggio -match 'S-1-5-21-220523388-838170752-839522115-yyyy'}

    Ci sono anche alcuni modi più puliti utilizzando il filtraggio XML.
    Ma personalmente non ho ancora avuto bisogno di loro, e il contenuto che corrisponde al messaggio è stato sufficiente finora.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.