• PowerShell 2.0管理事件日志(一)查看和读取事件日志


    事件日志是操作系统用来保存本身及其他程序信息的工具,本文将会介绍如何通过PowerShell脚本阅读事件日志并创建新的日志条目。Windows系统中包含多种事件日志,在Windows XP系统中包括4种主要的事件日志。即应用程序、系统、安全性及Internet Explorer日志,如图1所示。这样用户可以方便地从系统中提取和查看日志,从而了解系统的当前运行情况。本文将会介绍如何通过PowerShell管理Windows事件日志的方法。

    image

    图1 WindowsXP系统的事件日志

    1 查看事件日志

    在Windows Vista和Windows Server 2008版本中,事件日志的功能能够得到了大量改进和增强。通过使用Get-EventLog cmdlet可以查看事件日志内容,下面是脚本GetEventLogs.ps1的代码:

    Get-EventLog –List

    该脚本可获取本机中所有事件日志的清单,其中包括每个事件日志的大小、记录数,以及保存和覆盖策略等摘要信息,如图2所示。

    image

    图2 事件日志清单

    2 读取事件日志

    使用Get-EventLog –list查询当前计算机的事件日志后,可以使用Get-EventLog读取相应的日志,其基本形式是将事件日志的名称提供给Get-EventLog cmdlet。GetApplicationEventLog.ps1脚本的代码如下:

    Get-EventLog application

    运行该脚本显示所选日志的内容,如图3所示。

    image

    图3 所选日志的内容

    通常操作系统中有大量的系统日志,会显示为多屏。为了获取有用的信息,需要筛选输出内容。

    (1)输出到文本文件

    创建名为“WriteAppLogToText.ps1”的脚本输出查询结果到日志文本文件中,其代码如下:

    Get-EventLog application >C:\PowerShell\Applog.txt

    生成的文本文件内容如图4所示,其中保存完整的日志,随后即可查询其中关心的内容。

    image

    图4 生成文本文件内容

    还可以通过switch语句和正则表达式搜索和提取所需的内容,脚本switchAppTextLog.ps1使用这种方法处理日志,其代码如下:

    $AppLog = “C:\PowerShell\Applog.txt” $e=$i=$w=0

    Switch –wildcard –file $AppLog{

    “*error*” {$e++}

    “*info*” {$i++}

    “*warn*” {$w++}

    }

    Write-Output “

    $AppLog Contain following:

    Errors $e

    Warning $w

    Information $i

    执行结果如图5所示。

    image

    图5 执行结果

    (2)输出到XML文件

    将日志导出为XML文件需要使用Export-Clixml,这里使用Get-EventLog cmdlet指定要获取的事件日志的名称,用管道将日志结果传递给Export-Clixml cmdlet。并使用Export-Clixml cmdlet的参数指定保存输出的XML文件路径,路径中包含的文件夹地址必须是现有存在的;否则将会发生错误,如图6所示。

    image

    图6 将系统日志输出到XML文件中出错

    需要强调的是在Windows Vista和Windows Server 2008中,没有提升权限的用户无法在系统分区根目录中写入文件。在这种情况下,需要具有操作的足够权限才能将日志文件保存在其中。如果要查看程序日志,则不必提升权限。在使用事件查看器(Eventvwr.exe)工具读取安全日志时,需要提升用户账号权限(UAC)。访问安全日志需要安全令牌中包括seSecurityPrivilege特权,默认情况下,只有管理员组的成员可以获得此权限,因此在需要将脚本提升权限后运行。最简单方法是创建一个提升的Windows PowerShell的进程,为此右击后选择快捷菜单中的“运行方式”选项。在打开的对话框中输入管理员账号及密码,即可以管理员身份运行当前的PowerShell进程。

    创建名为“WriteAppLogToXml.ps1”的脚本,将日志写入XML文件中,代码如下:

    Get-EventLog application | Export-Clixml –Path C:\PowerShell\applog.xml –Depth 2

    写入后可以使用Excel打开该文件。需要通过菜单中的“数据”|“XML”|“导入”选项选中其中要导入的文件,从弹出的“导入数据”对话框中选择“现有工作表中的XML列表”选项。随后Excel会用一段时间转换,表格中显示其中的内容。但是表中的列名称并不是事件日志中的字段名,这里的显示名称会类似“n”或“ns:l”,或其他名称。如果查看每一列数据的详细信息,则与日志文件中的数据相吻合,如图7所示。

    image

    图7 将xml格式的系统日志导入Excel中显示

    3 总结

    本文介绍了通过PowerShell对Windows Vista和Windows Server 2008的事件日志进行管理的操作,包括使用Get-EventLog cmdlet生成可用的事件日志清单、使用同一个cmdlet查看、读取不同的事件日志。

    作者: 付海军
    出处:http://fuhj02.cnblogs.com
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
    个人网站: http://txj.shell.tor.hu/

  • 相关阅读:
    sort
    Sicily--17956. Maximum Multiple
    代码1005
    487-3279的解法实例
    487-3279另一种解法
    487-3279
    人工智能--识别句子
    1003-Hangover
    推荐书单(转自GITHUB)
    转自微信号:测试那点事
  • 原文地址:https://www.cnblogs.com/fuhj02/p/1922638.html
Copyright © 2020-2023  润新知