Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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
C++ 使用Powershell导出Windows事件日志_C++_Powershell - Fatal编程技术网

C++ 使用Powershell导出Windows事件日志

C++ 使用Powershell导出Windows事件日志,c++,powershell,C++,Powershell,是否有一种方法可以使用PowerShell或任何其他编码方法通过事件日志清单导出所有Windows事件日志?其目标不仅是导出安全、应用程序或系统中的事件日志,而且还要导出Microsoft中所有可能的事件日志。这必须包括描述、名称和ID?这里有很多调整,但这是基本要点。“-ListLog*”将获取所有日志名,然后您只需单步查看它们。“-ErrorAction SilentlyContinue”是由于日志中没有生成错误的事件。如果希望看到其他错误,可以捕获特定异常(NoMatchingEvents

是否有一种方法可以使用PowerShell或任何其他编码方法通过事件日志清单导出所有Windows事件日志?其目标不仅是导出安全、应用程序或系统中的事件日志,而且还要导出Microsoft中所有可能的事件日志。这必须包括描述、名称和ID?

这里有很多调整,但这是基本要点。“-ListLog*”将获取所有日志名,然后您只需单步查看它们。“-ErrorAction SilentlyContinue”是由于日志中没有生成错误的事件。如果希望看到其他错误,可以捕获特定异常(NoMatchingEventsFound)

$Logs = Get-Winevent -ListLog *

foreach ($Log in $Logs) {
  Get-WinEvent -LogName $Log.LogName -ErrorAction SilentlyContinue
}

如果要列出所有已注册邮件DLL,请按以下方式操作:

$lognames = Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\ | Select Name
$DLLs = foreach ($logname in $lognames) {
    $providers = gci $logname.Name.Replace('HKEY_LOCAL_MACHINE','HKLM:')
    foreach ($provider in $providers) {
        $item = get-itemproperty  -Path $provider.name.replace('HKEY_LOCAL_MACHINE','HKLM:')
        $item.EventMessageFile
    }
}
之后,您可以逐步浏览$DLL并使用下面的文档引用来提取数据。我还没有研究过如何做到这一点,但如果是.Net,您很可能可以在PowerShell中实现


Scott,谢谢你的回复。我看到的一个错误是“无法通过高级安全性/连接安全性Erbose日志等检索有关Microsoft Windows防火墙的信息。这是由于未启用该日志造成的吗?另外,请澄清。我不想导出系统上发生的事件。我想生成一个具有准确描述的所有类型的Windows事件的列表。你可能认为Microsoft会在网上的某个地方有一个列表。好的,为了确保我理解,你想要一个可能的事件源和事件ID的列表,并带有描述?由于多个部件由不同的团队管理,因此Windows没有明确的来源。如果您搜索事件ID,您将被带到不同的TechNet或MS文档页面。根据您安装的应用程序的不同,它可能会有所不同。有一个注册表项,其中包含所有注册的源代码和DLL,您可以枚举和查询它们,但我不知道这会有多大帮助。您是否有可能查询这些注册表项?这就是问题所在,没有真正的来源。我可以帮你列举所有DLL,但是你认为你可以按照这些文档来提取数据吗?我没有时间深入研究那件事。谢谢,我将测试TISCOCOT,所以我能够成功地拉所有DLL与你建议,但是我不是太精通C++。我看过一些关于如何使用PowerShell查询注册表项的内容,但没有听到任何声音。你有什么想法吗?