无法在Windows 2016中获取WindowsUpdateLog

问题描述 投票:0回答:2

在尝试运行Get-WindowsUpdateLog时,我收到以下错误。我遇到了一个博客,将SymSrv.dll文件复制到服务器上。这没有意义,因为我不得不在这么多服务器上进行故障排除。是不是有另一种方法来读取Windows 2016中的Windows Update日志?

Copy-Item:找不到路径'C:\ Program Files \ Windows Defender \ SymSrv.dll',因为它不存在。

powershell windows-server-2016
2个回答
0
投票

您还可以从WinSxS文件夹本地获取文件(在其中搜索)。

这对我们有用,但WindowsUpdate.log文件中的输出是垃圾。


0
投票

从32位应用程序启动Get-WindowsUpdateLog时遇到了类似的问题,默认情况下使用了32位PowerShell。这个link帮助了我。通过确保我们运行64位版本的PowerShell来修复。从我的32位实用程序,我应用powershell的完整路径:C:\ Windows \ sysnative \ WindowsPowerShell \ v1.0 \ powershell.exe(使用“sysnative”而不是“System32”来定位真正的System32文件夹),它的工作原理好。

可以在C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ WindowsUpdate \ WindowsUpdateLog.psm1中看到,有一个代码:

$SYMSRV_DLL_PATH = "$env:ProgramFiles\Windows Defender\SymSrv.dll" 
..
Copy-Item -Path $SYMSRV_DLL_PATH -Destination $WORKDIR -Force -ErrorAction Stop.

因此,SymSrv.dll从Program Files文件夹复制到临时文件夹。但是,对于32位进程,$ env:ProgramFiles的目标不是Program Files而是Program Files(x86)文件夹(不包含SymSrv.dll)。这就是为什么我们必须运行64位版本的powershell。

© www.soinside.com 2019 - 2024. All rights reserved.