none
EventLog и PowerShell RRS feed

  • Вопрос

  • Добрый день. Прошу помощи со скриптом PowerShell.
    На натолкнулся на статью по Аудиту AD средствами PoSh.
    Для этого настроил пересылку событий с определенными ID на сервер коллектор, на котором в планировщик накидал скриптов, которые срабатывают при появлении определ. ID.

    Возник вопрос о скрипте, который вытаскивает инфу из EventLog с ID=4625 (неудачный логон на сервер).

    Скрипт:
     
     #Определяем все переменные для отправки
    # Первая строчка в теле письма, чтобы понимать о чем речь.
     $Theme = 'Попытка неудачного входа на сервер ' 
     $Subject = 'Попытка неудачного входа' # Тема сообщения
     $Server = 'server.domain.local' # SMTP Сервер
     $From = 'Audit@domain.ru' # Адрес отправителя
     $To = 'Admin@domain.ru' # Получатель
    #Устаналиваем кодировку UTF8 для корректного отображения информации в теле письма
     $encoding = [System.Text.Encoding]::UTF8 
     
     #Собственно сам запрос поиска события. Выбирается последнее произошедшее событие с таким ID. Данные записываются в переменную Body.
    $Body=Get-WinEvent -FilterHashtable @{LogName='ForwardedEvents';ID=4625} |
    Select TimeCreated,@{n='User';e={([xml]$_.ToXml()).Event.EventData.Data | 
    ? {$_.Name -eq 'TargetUserName'} |
     %{$_.'#text'}}},@{n='ComputerName';e={([xml]$_.ToXml()).Event.EventData.Data |
     ? {$_.Name -eq 'WorkstationName'}| 
    %{$_.'#text'}}},@{n='IPAddress';e={([xml]$_.ToXml()).Event.EventData.Data |
     ? {$_.Name -eq 'IPAddress'}| %{$_.'#text'}}}| 
    select-object -first 1
    
    $body = $body -replace "@{" -replace "}" -replace "=", ": " -replace ";","`n" -replace "TimeCreated","Время" -replace "^","`n" -replace "EventID","Iddd" 
    $BodyM = $Body
    #Отправка письма.
     Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme `n$BodyM” -Subject $Subject  -Encoding $encoding 


    Пример XML файла , откуда вытаскивает скрипт инфу:
    -<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    -<System>  
    <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" /> 
    <EventID>4625</EventID>
    <Version>0</Version>   
    <Level>0</Level>   
    <Task>12544</Task>   
    <Opcode>0</Opcode> 
    <Keywords>0x8010000000000000</Keywords>
    <TimeCreated SystemTime="2012-11-28T03:10:15.487910000Z" />
    <EventRecordID>36540116</EventRecordID> 
    <Correlation />   
    <Execution ProcessID="496" ThreadID="2912" />   
    <Channel>Security</Channel>  
    
        <Computer>DC.domain.local</Computer>
    
    <Security />   
    </System>
    -<EventData>  
    <Data Name="SubjectUserSid">S-1-0-0</Data>   
    <Data Name="SubjectUserName">-</Data>  
    <Data Name="SubjectDomainName">-</Data>   
    <Data Name="SubjectLogonId">0x0</Data>   
    <Data Name="TargetUserSid">S-1-0-0</Data>   
    <Data Name="TargetUserName">user</Data>   
    <Data Name="TargetDomainName">userpc</Data>   
    <Data Name="Status">0xc000006d</Data>   
    <Data Name="FailureReason">%%2313</Data>   
    <Data Name="SubStatus">0xc0000064</Data>   
    <Data Name="LogonType">3</Data>   
    <Data Name="LogonProcessName">NtLmSsp</Data>   
    <Data Name="AuthenticationPackageName">NTLM</Data>   <Data Name="WorkstationName">USERPC</Data>   
    <Data Name="TransmittedServices">-</Data>   
    <Data Name="LmPackageName">-</Data>   
    <Data Name="KeyLength">0</Data>  
    <Data Name="ProcessId">0x0</Data>  
    <Data Name="ProcessName">-</Data>   
    <Data Name="IpAddress">192.168.1.56</Data>  
    <Data Name="IpPort">52802</Data>  
    </EventData>- <RenderingInfo Culture="en-US">
    <Message>An account failed to log on. </Message>
    <Level>Information</Level>   
    <Task>Logon</Task>   
    <Opcode>Info</Opcode>   
    <Channel>Security</Channel>  
    <Provider>Microsoft Windows security auditing.</Provider>
    -<Keywords> 
    <Keyword>Audit Failure</Keyword>   
    </Keywords>  
    </RenderingInfo> 
    </Event>


    В связи с вышеизложенным, подскажите, как вытащит из XML eventlog , следующую инфу:
    <Computer>DC.domain.local</Computer> , а именно строку которая находится между тегами <Computer>
    Заранее спасибо!
    28 ноября 2012 г. 6:24

Ответы

Все ответы