每次启动时事件日志中都会出现 WMI 错误:EventID 5605

每次启动时事件日志中都会出现 WMI 错误:EventID 5605

我有几个服务器,我不断收到EventID 错误 5605

root\cimv2\TerminalServices 命名空间标有 RequiresEncryption 标志。如果脚本或应用程序没有适当的身份验证级别,则可能会拒绝访问此命名空间。将身份验证级别更改为 Pkt_Privacy,然后再次运行脚本或应用程序。

问题是我不知道这个脚本是从哪里运行的,所以我无法像我在事件 5605 上找到的其他帖子一样更新脚本来解决问题。我检查了 GPO 中的启动脚本,检查了我域的所有 SYSVOL 共享中的 VBScript 或 Powershell 脚本。我找不到这个脚本。我该如何找到这个脚本并修复它,以便它不再抛出这个错误?

答案1

使用WMI 事件跟踪在事件查看器中,这将允许您将 WMI 查询链接到特定进程。

  1. 打开事件查看器。
  2. 在“查看”菜单上,单击“显示分析和调试日志”。
  3. 在应用程序和服务日志 | Microsoft | Windows | WMI 活动下找到 WMI 的跟踪通道日志。
  4. 右键单击跟踪日志并选择日志属性。
  5. 单击“启用日志记录”复选框以启动 WMI 事件跟踪。

WMI 事件出现在 WMI-Activity 的事件窗口中。

此事件日志有时使用起来很麻烦,因此您可以使用如下脚本来开始跟踪和查看事件,并将进程名称附加到 WMI 查询:

$wmiLog = "Microsoft-Windows-WMI-Activity/Trace"
echo y | Wevtutil.exe sl $wmiLog /e:true
Read-Host -Prompt "Tracing WMI Started. Press [ENTER] to stop"
echo y | Wevtutil.exe sl $wmiLog /e:false
$events = Get-WinEvent -LogName $wmiLog -Oldest | Where-Object {$_.message.Contains("Operation = Start") -or $_.message.Contains("Operation = Provider") }

if ($events -eq $null)
{
    Write-Host "No WMI events in trace!"
    return
}

$table = New-Object System.Data.DataTable
[void]$table.Columns.Add("Computer")
[void]$table.Columns.Add("Namespace")
[void]$table.Columns.Add("Type")
[void]$table.Columns.Add("Query")
[void]$table.Columns.Add("UserName")
[void]$table.Columns.Add("Process")

ForEach ($event in $events)
{
    switch ($event.Properties.Count)
    {
        6 {
            $typeStart = $event.Properties[1].Value.IndexOf("::")+2
            $typeEnd = $event.Properties[1].Value.IndexOf(" ",$typeStart) 
            $type = $event.Properties[1].Value.Substring($typestart,$typeEnd-$typeStart)
            $query = $event.Properties[1].Value.Substring($event.Properties[1].Value.IndexOf(":",$typeEnd)+2)
            $process = Get-Process -Id ($event.Properties[2].Value) -ErrorAction SilentlyContinue
            if ($process -eq $null) 
            { 
                $process = "($($event.Properties[2].Value))"
            }
            else
            {
                $process = "$($process.Name) ($($process.Id))"
            }      

            [void]$table.Rows.Add(`
                $env:COMPUTERNAME,`
                "\\.\root\cimv2",`
                $type,`
                $query,`
                "N/A",
                $process)
        }
        8 {
            $typeStart = $event.Properties[3].Value.IndexOf("::")+2
            $typeEnd = $event.Properties[3].Value.IndexOf(" ",$typeStart) 
            $type = $event.Properties[3].Value.Substring($typestart,$typeEnd-$typeStart)
            $query = $event.Properties[3].Value.Substring($event.Properties[3].Value.IndexOf(":",$typeEnd)+2)
            $process = Get-Process -Id ($event.Properties[6].Value) -ErrorAction SilentlyContinue
            if ($process -eq $null) 
            { 
                $process = "($($event.Properties[6].Value))"
            }
            else
            {
                $process = "$($process.Name) ($($process.Id))"
            }

            [void]$table.Rows.Add(`
                $event.Properties[4].Value,`
                $event.Properties[7].Value,`
                $type,`
                $query,`
                $event.Properties[5].Value,
                $process)
        }
        default
        {
            Write-Error "Unexpected number of event properties."
            Write-Host $event
            Write-Host $event.Properties
        }
    }
}

$table | Out-GridView

Tracelog.exe 和 tracefmt.exe 来自Windows 驱动程序工具包 (WDK)也可以用于 WMI 跟踪。

答案2

由于这是 WMI,因此它通常反映远程调用。例如,Lansweeper 扫描仪会触发此错误,但针对不同的命名空间:root\cimv2\Security\MicrosoftTPM。您可能需要监控流向受影响服务器的网络流量,以便在 WMI 查询不是本地时识别其来源。

相关内容