热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Powershell查询Windows日志的方法

这篇文章主要介绍了Powershell查询Windows日志的方法,需要的朋友可以参考下

论坛里面有人询问如何使用powershell脚本查询文件修改的审计日志,豆子服务器没开这个功能,不过尝试写了个类似的脚本可以查询日志,并输出对应的xml内容。

基本方法是get-winevent, 可以指定对应的eventid,获取列表。如果想获取这个事件具体的内容,需要根据不同事件的xml内容进行变化。

比如

$Events = Get-WinEvent -ComputerName syddc01 -FilterHashtable @{Logname='Security';Id=4771} -MaxEvents 1 
$eventXML = [xml]$Event.ToXml() 
$eventxml.event.event.data 

wKioL1X4-cOxNGptAADLqd6u8fc788.jpg

根据这个思路,我如果想获取最新的20个4771的事件日志,并输出结果

$Events = Get-WinEvent -ComputerName syddc01 -FilterHashtable @{Logname='Security';Id=4771} -MaxEvents 20     
       
# Parse out the event message data       
ForEach ($Event in $Events) {       
  # Convert the event to XML       
  $eventXML = [xml]$Event.ToXml()       
  # Iterate through each one of the XML message properties       
  For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) { 
    
       
    # Append these as object properties       
    Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name $eventXML.Event.EventData.Data[$i].name -Value $eventXML.Event.EventData.Data[$i].'#text'      
  }       
}       
  
   
$events | select Message, TargetUserName, ipaddress,timecreated | Out-GridView 

wKioL1X4-iPDwCAuAANhZPcU2WY929.jpg

有的时候,事件的数目很多,我希望对这个时间进行一个限制。千万别用 where-object 的方式来过滤,不然等到地老天荒也未必出结果。
我们需要通过哈希表来过滤

$endtime=get-date
$starttime=$endtime.addminutes(-1) 
$eventcritea = @{logname='security';id=4740;starttime=$starttime;endtime=$endtime}

另外一种常见的方式是通过xmlfilter来过滤日志

首先,我们可以通过event viewer来自定义一个xpath

wKioL1X4-uqzi5EaAADOjL7kW3U689.jpg

wKiom1X4-UWAiui2AAGGHaznvrM148.jpg

wKioL1X4-3yxulR8AAEV0mqB1HM575.jpg

因为是不同的事件,他的eventdata结果是不一样的,因此我做了些变动。

[xml]$xmlFilter = @" 
 
  
   
  
 
“@ 
#Get-WinEvent -ComputerName $DC.DC -LogName Security -FilterXPath "*[System[(EventID=529 or EventID=644 or EventID=675 or EventID=676 or EventID=681 or EventID=4625) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" #-MaxEvents 50 
$Events = Get-WinEvent -ComputerName syddc01 -FilterXML $xmlFilter 
ForEach ($Event in $Events) {       
  # Convert the event to XML       
  $eventXML = [xml]$Event.ToXml()       
  # Iterate through each one of the XML message properties       
  For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) { 
    
       
    # Append these as object properties       
    Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name "App" -Value $eventXML.Event.EventData.Data[5]      
  }       
}   
$Events | select Message, App, providerName, timecreated | Out-GridView 

结果如下

wKiom1X4-LfAh_1ZAAIHTGF2q2I120.jpg

最后再给一个例子,我希望获取lockout用户的信息以及他们是在哪里被锁住的,这个日志我们查看4771或者4740。4771的日志过多,查询太慢,所以这里我已4740为例。

eventcritea = @{logname='security';id=4740} 
$Events =get-winevent -ComputerName (Get-ADDomain).pdcemulator -FilterHashtable $eventcritea 
#$Events = Get-WinEvent -ComputerName syddc01 -Filterxml $xmlfilter     
       
# Parse out the event message data       
ForEach ($Event in $Events) {   
    
  # Convert the event to XML       
  $eventXML = [xml]$Event.ToXml()   
      
  # Iterate through each one of the XML message properties       
  For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) { 
    
       
    # Append these as object properties       
    Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name $eventXML.Event.EventData.Data[$i].name -Value $eventXML.Event.EventData.Data[$i].'#text'      
  }       
}       
  
   
$events | select TargetUserName,timecreated, targetdomainname | Out-GridView -Title LockOutStatus 
break; 
Search-ADAccount -LockedOut | ForEach-Object {Unlock-ADAccount -Identity $_.distinguishedname }

wKioL1YCTLTT2ydOAAKYKU8Qewo401.jpg

本文出自 “麻婆豆腐” 博客


推荐阅读
  • Windows 10系统对Intel服务器的影响:来自微软官网的下载选项分析 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • Go 项目中数据库配置文件的优化与应用 ... [详细]
  • 《精通 jQuery》第六章:深入解析与实战应用
    《精通 jQuery》第六章:深入解析与实战应用本章详细探讨了 Ajax 技术的核心机制及其实际应用。Ajax 通过 XMLHttpRequest 对象实现客户端与服务器之间的异步数据交换,从而在不重新加载整个页面的情况下更新部分内容。这种技术不仅提升了用户体验,还提高了应用的响应速度和效率。此外,本章还介绍了如何利用 jQuery 简化 Ajax 操作,并提供了多个实战案例,帮助读者更好地理解和掌握这一重要技术。 ... [详细]
  • Java Web开发中的JSP:三大指令、九大隐式对象与动作标签详解
    在Java Web开发中,JSP(Java Server Pages)是一种重要的技术,用于构建动态网页。本文详细介绍了JSP的三大指令、九大隐式对象以及动作标签。三大指令包括页面指令、包含指令和标签库指令,它们分别用于设置页面属性、引入其他文件和定义自定义标签。九大隐式对象则涵盖了请求、响应、会话、应用上下文等关键组件,为开发者提供了便捷的操作接口。动作标签则通过预定义的动作来简化页面逻辑,提高开发效率。这些内容对于理解和掌握JSP技术具有重要意义。 ... [详细]
  • Spring Boot 和 Spring Cloud 是 Spring 生态系统中的重要组成部分,各自具有独特的特性和应用场景。Spring Boot 通过简化配置和自动配置机制,显著提高了开发和部署效率,减少了传统 Spring 应用中繁琐的 XML 配置文件需求。而 Spring Cloud 则在此基础上进一步提供了分布式系统的解决方案,包括服务发现、配置管理、断路器等高级功能,适用于微服务架构的构建和管理。本文将深入探讨两者的核心差异,并分析其各自的最佳应用场景。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
  • 在微信小程序中实现外部链接跳转,可以通过微信官方提供的组件来完成。具体而言,有以下两种方法:1. 首先,可以通过创建一个新的 `` 组件来加载外部网页。这个组件允许在小程序内部嵌入一个网页视图,从而实现外部链接的展示和交互。2. 另一种方法是使用 `wx.navigateToMiniProgram` API,通过调用该接口可以跳转到其他已安装的小程序,实现更丰富的跨应用交互功能。这两种方法各有优缺点,开发者可以根据实际需求选择合适的方式。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 2023版Mac中文Photoshop下载:专业图像编辑软件PS Mac版最新资源
    2023版Mac中文Photoshop下载:专业图像编辑软件PS Mac版最新资源 ... [详细]
  • 3K助手HD安装遇到问题如何解决
    在使用3K助手HD时遇到安装问题怎么办?这款专为iPad设计的应用,旨在提供丰富的游戏安装、应用下载以及游戏评测和攻略阅读等功能。然而,有些用户可能会发现自己的iPad无法顺利安装该应用。面对这种情况,可以尝试检查设备的系统版本是否符合要求,或者清除缓存后重新尝试安装。如果问题依然存在,建议联系官方客服寻求帮助。 ... [详细]
  • 本文介绍了一个基于C++标准库实现的INI文件读写操作类。该类在现有网络资源的基础上进行了扩展和优化,增加了获取当前可执行文件路径和宽字节与多字节字符串转换的功能。通过这些增强功能,该类能够更好地适应各种应用场景,提高代码的可移植性和健壮性。具体实现细节请参见 `IniFileSTL.h` 文件。 ... [详细]
  • CentOS 7 网络模式下虚拟机的详细配置指南
     1::虚拟机选择net模式  2:虚拟网络配置 此处的网关和网段与下面的ens-33文件配置要一致由ens-33配置文件向这个配置看齐   3:网卡配置文件vietcsyscon ... [详细]
author-avatar
Victory学德语
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有