2017-09-01 4 views
0

au lieu d'utiliser Regex, puis-je récupérer des sous-chaînes dans le bloc de message d'une entrée de journal des événements?bloc de message d'entrée du journal des événements récupérer les valeurs

C'est ce que le bloc de texte ressemble:

Kerberos pre-authentication failed. 

Account Information: 
    Security ID:  HO\administrators$ 
    Account Name:  administrators$ 

Service Information: 
    Service Name:  krbtgt/HO.FOSLTD.CO.ZA 

Network Information: 
    Client Address:  ::ffff:10.250.1.12 
    Client Port:  51933 

Additional Information: 
    Ticket Options:  0x40000000 
    Failure Code:  0x18 
    Pre-Authentication Type: 2 

je veux que les valeurs à droite de:

Account Name 
Client Address, but with out the ::ffff: 
Failure Code 

cette partie de mon code retourner le texte ci-dessous:

$sSecurityID = $Item.SubString($Item.IndexOf("Account Information")) 
$sSecurityID = $sSecurityID.SubString($sSecurityID.IndexOf("Account Name")) 
$sSecurityID = $sSecurityID.TrimStart("Account Name:") 
$sSecurityID = $sSecurityID.Trim() 

sortie:

OrtheaE 

Service Information: 
    Service Name:  krbtgt/ho 

Network Information: 
    Client Address:  ::ffff:172.26.50.11 
    Client Port:  20697 

Additional Information: 
    Ticket Options:  0x40810010 
    Failure Code:  0x18 
    Pre-Authentication Type: 2 

Répondre

0

Comment extrayez-vous les données du journal? Vous recherchez le champ ReplacementStrings qui n'est pas disponible lorsque vous utilisez Get-WinEvent.

get-eventlog -computername dc-01 -logname security | ?{$_.eventid -eq "4674"} | 
 
select machinename,eventid,@{n='AccountName';e={$_.ReplacementStrings[1]}},entrytype,message | 
 
convertto-html | out-file c:\test.html

Et si ceux-ci ne travaillent pas plus sera certainement:

Get-EventLog "Security" -before 4/10/2013 -InstanceId 4663 | % { 
 
    New-Object psobject -Property @{ 
 
     Index = $_.Index 
 
     TimeGenerated = $_.TimeGenerated 
 
     "Account Name" = $_.ReplacementStrings[1] 
 
     "Object Type" = $_.ReplacementStrings[5] 
 
     "Object Name" = $_.ReplacementStrings[6] 
 
    } 
 
} | export-csv c:\export.csv -NoTypeInformation

Vous verrez que toutes les valeurs sont dans vos ReplacementStrings dans l'ordre qu'ils sont montrés dans le texte. La première variable de ce message est "Security ID", donc probablement stockée dans $ _. ReplacementStrings [0] etc.