Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 使用PowerShell和WMI读取安全日志_Security_Powershell_Wmi - Fatal编程技术网

Security 使用PowerShell和WMI读取安全日志

Security 使用PowerShell和WMI读取安全日志,security,powershell,wmi,Security,Powershell,Wmi,我正在构建一个脚本来读取多台计算机的安全日志。使用Get EventLog命令时,我可以从本地计算机读取安全日志,但问题是我无法在远程计算机上运行它(该脚本适用于powershell v1)。下面的命令永远不会返回任何结果,尽管对于任何其他日志文件,它都可以完美地工作: gwmi-类Win32_NTLogEvent |其中{$\.LogFile-eq“Security”} 我做了一些研究,我似乎是一个模拟问题,但是Get-WmiObject的-impersonation选项似乎没有实现。这个问题

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

gwmi-类Win32_NTLogEvent |其中{$\.LogFile-eq“Security”}

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

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

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

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

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

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


gwmi Win32\u NTLogEvent-筛选器“LogFile='Security'”-计算机comp1、comp2-凭据域\用户

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


gwmi Win32\u NTLogEvent-筛选器“LogFile='Security'”-计算机comp1,comp2-凭据域\用户

感谢提供筛选器提示。你完全正确。至于凭证的使用,我是本地管理员,甚至获取本地安全事件日志也不起作用。对于V2,有一个-EnableAllPrivileges开关:gwmi Win32\u NTLogEvent-filter“LogFile='security'”-EnableAllPrivilegesThanks用于筛选提示。你完全正确。就凭证的使用而言,我是本地管理员,甚至获取本地安全事件日志也不起作用。对于V2,有一个-EnableAllPrivileges开关:gwmi Win32\u NTLogEvent-filter“LogFile='security'”-EnableAllPrivileges