使用PowerShell和WMI读取安全日志

时间:2009-05-15 20:10:05

标签: security powershell wmi

我正在构建一个脚本来从多台计算机上读取安全日志。使用Get-EventLog命令时,我可以从本地计算机上读取安全日志没有问题,但问题是我无法在远程计算机上运行它(该脚本适用于PowerShell v1)。下面的命令永远不会返回任何结果,尽管使用任何其他LogFile,它可以完美地运行:

  

gwmi - 类Win32_NTLogEvent |其中{$ _。LogFile -eq“Security”}

我做了一些研究,我似乎是一个冒充问题,但Get-WmiObject的-Impersonation选项似乎没有实现。反正这个问题呢?解决方案可能是以某种方式在远程计算机上运行Get-EventLog,或者处理模拟问题以便可以访问安全日志。 感谢

2 个答案:

答案 0 :(得分:3)

您可以直接使用.NET而不是通过WMI。下面的脚本块将为您提供安全日志中的第一个条目

$logs = [System.Diagnostics.EventLog]::GetEventLogs('computername')
$security = $logs | ? {$_.log -like 'Security'} 
$security.entries[0]

答案 1 :(得分:1)

您是否尝试过使用-Credential参数?此外,使用filter参数而不是where-object,它只获取安全事件(where-object从所有日志获取所有事件,然后才执行过滤)

gwmi Win32_NTLogEvent -filter“LogFile ='Security'” - 计算机comp1,comp2 -credential domain \ user