无法在Windows 2016中获取WindowsUpdateLog

时间:2017-08-18 04:27:24

标签: powershell windows-server-2016

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

  

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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的目标不是程序文件,而是程序文件(x86)文件夹(不包含SymSrv.dll)。这就是为什么我们必须运行Powershell的64位版本的原因。