我正在构建一个脚本来从多台计算机上读取安全日志。使用Get-EventLog命令时,我可以从本地计算机上读取安全日志没有问题,但问题是我无法在远程计算机上运行它(该脚本适用于PowerShell v1)。下面的命令永远不会返回任何结果,尽管使用任何其他LogFile,它可以完美地运行:
gwmi - 类Win32_NTLogEvent |其中{$ _。LogFile -eq“Security”}
我做了一些研究,我似乎是一个冒充问题,但Get-WmiObject的-Impersonation选项似乎没有实现。反正这个问题呢?解决方案可能是以某种方式在远程计算机上运行Get-EventLog,或者处理模拟问题以便可以访问安全日志。 感谢
答案 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