【问题标题】:Extract Username From Log Text using Powershell使用 Powershell 从日志文本中提取用户名
【发布时间】:2021-11-09 15:41:54
【问题描述】:

我正在尝试从事件查看器日志中提取所有登录尝试失败的用户名,然后仅列出用户名。但是,每个条目的数据都是文本,因此我很难仅提取名称(在本例中为 Intruder123)。这将是存储在一个数组中的几百个帐户名称。

$String = Get-WinEvent @{LogName='Security';ProviderName='Microsoft-Windows-Security-Auditing';ID=4625 }  -ComputerName SECRETSERVER |
    Select-Object -ExpandProperty Message

$string -match "Account Name:       (?<content>.*)"
$matches['content']

数据看起来像这样(多次):

Account For Which Logon Failed:
    Security ID:        S-1-0-0
    Account Name:       Intruder123
    Account Domain:     SECRET.LOCAL

【问题讨论】:

  • 您要查看多少事件? $Events = Get-WinEvent @{LogName='Security';ProviderName='Microsoft-Windows-Security-Auditing';ID=4625;MaxEvents='50' }; $Events | Select-String -InputObject {$_.message} -Pattern 'my pattern'.
  • 你应该问一个具体的问题。有什么东西没有按预期工作吗?您收到错误消息吗?

标签: powershell powershell-3.0


【解决方案1】:

我认为您可以收集更多信息,例如登录失败的时间以及在哪台计算机上。为此,请创建一个结果对象数组。
此外,尝试解析 Message 属性可能很麻烦,我认为从 Event 获取信息作为 XML 会更好:

$filter = @{LogName='Security';ProviderName='Microsoft-Windows-Security-Auditing';ID=4625 }
$result = Get-WinEvent -FilterHashtable $filter -ComputerName SECRETSERVER | ForEach-Object {
    # convert the event to XML and grab the Event node
    $eventXml = ([xml]$_.ToXml()).Event
    $userName = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'TargetUserName' }).'#text'
    $computer = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'WorkstationName' }).'#text'
    # output the properties you need
    [PSCustomObject]@{
        Time     = [DateTime]$eventXml.System.TimeCreated.SystemTime
        UserName = $userName
        Computer = $computer
    }
}

# output on screen
$result

# output to CSV file
$result | Export-Csv -Path 'X:\FailedLogons.csv' -NoTypeInformation

【讨论】:

  • 太棒了!完全按照我想要的方式工作。你能解释一下为什么它被转换成 XML 吗?
  • @Salve 从Get-WinEvent 返回的每个事件对象都有一个.ToXml() 方法。当您在 Windows 事件查看器中查看选项卡 XML 时,也会使用此功能。将数据作为 XML 进行解析比尝试通过事件的 Message 属性(即本地化文本)进行正则表达式更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
相关资源
最近更新 更多