在尝试运行Get-WindowsUpdateLog
时,我收到以下错误。我遇到了一个博客,将SymSrv.dll
文件复制到服务器上。这没有意义,因为我不得不在这么多服务器上进行故障排除。是不是有另一种方法来读取Windows 2016中的Windows Update日志?
Copy-Item:找不到路径'C:\ Program Files \ Windows Defender \ SymSrv.dll',因为它不存在。
您还可以从WinSxS文件夹本地获取文件(在其中搜索)。
这对我们有用,但WindowsUpdate.log文件中的输出是垃圾。
从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。