尝试从 UNC 路径更新 Windows Defender 不断失败

尝试从 UNC 路径更新 Windows Defender 不断失败

我正在尝试使用存储在 UNC 路径上的定义来更新 Windows Defender(在 Win 10 上)。

我正在像这样设置 mpam-fe.exe 文件的路径

Set-MpPreference -SignatureDefinitionUpdateFileSharesSources \\path\to\mpam.exe

然后我运行 Get-MpPreference 来验证路径是否已设置(确实如此)。一旦我验证路径正确,签名定义更新文件共享源我跑

Update-MpSignature -UpdateSource FileShares

我立即收到错误

Update-MpSignature : Virus and spyware definitions update was completed with errors.
At line:1 char:1
+ Update-MpSignature -UpdateSource FileShares
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound:    (MSFT_MpSignature:ROOT\Microsoft\...SFT_MpSignature) [Update-MpSignature], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070002,Update-MpSignature

此故障几乎立即发生。为了验证特定的 powershell 实例是否可以访问相关文件共享 - 我随后执行了 mpam-fe.exe 文件,结果成功了。

答案1

我以前从未这样做过,但你的问题让我很好奇,于是我开始做一些测试。我能够重现你的问题。显然,没有多少人这样做,因为互联网上没有关于如何做到这一点的连贯信息。所以,你一无所获也就不足为奇了。

这是我在使用 Process Monitor 时发现的。我能够成功地从文件源更新 Defender。

  • 首先,更新包由三个文件组成:mpam-fe.exempam-d.exenis_full.exe。我尝试使用mpam-fe.exe ,但失败了。
  • 其次,更新有 32 位和 64 位版本。运行命令时,Update-MPSignature它会在源路径中的x64x86文件夹下找到更新。因此,您需要在源路径下创建其他文件夹并将更新文件放入其中。
  • 第三,更新 Windows Defender 的进程是 wmiprvse.exe (WMI) - 它以本地系统身份运行。请注意,使用计算机帐户而不是用户帐户连接到文件源。我尝试了几种不同的方法,试图让它连接到加入域的服务器上的文件共享。这包括添加计算机帐户、、domain computersEveryoneAnonymous但都不起作用。每次都失败,并出现“访问被拒绝”的情况。只有当我将文件放在没有安全限制的 NAS 上时,我才能让它工作。

以下是可以帮助下载更新包的脚本:https://www.powershellgallery.com/packages/SignatureDownloadCustomTask/1.4

以下是我用来实现此功能的其他参考资料: https://technet.microsoft.com/en-us/itpro/powershell/windows/defender/update-mpsignature?f=255&MSPPError=-2147217396

https://technet.microsoft.com/en-us/itpro/powershell/windows/defender/set-mppreference

如何授予 LocalSystem 帐户网络访问权限?

https://docs.microsoft.com/en-us/windows/threat-protection/windows-defender-antivirus/manage-protection-updates-windows-defender-antivirus

https://docs.microsoft.com/en-us/windows/threat-protection/windows-defender-antivirus/deployment-vdi-windows-defender-antivirus

http://ccmexec.com/2016/01/download-and-deploy-windows-defender-definitions-for-windows-10-during-osd/

答案2

我遇到过同样的问题。通过在共享中创建一个 x64 文件夹并将定义移动到该文件夹​​,解决了这个问题。我找不到这个要求,但它确实有效。SCEP 使用此文件夹结构,所以我的想法就是从那里来的。即使是Microsoft 提供的脚本没有创建架构文件夹!

服务器设置:

  • 文件共享(例如 \\Server\Share$)具有完全共享权限和读取权限每个人(不需要域计算机!)
  • 文件夹x64包含 64 位定义文件(例如 \\Server\Share$\x64\mpam-fe.exe)

客户端设置(powershell):

Set-MpPreference -SignatureDefinitionUpdateFileSharesSources \\Server\Share$
Set-MpPreference -SignatureFallbackOrder 'FileShares'
Update-MPSignature

答案3

Appleoddity 的答案提供了您所需的一切。不过有一些注意事项;

  • Update-MpSignature 在 powershell 中从未对我起作用。我花了很多时间尝试设置环境以使这些更新能够正常工作,并使用 Update-MpSignature 作为测试。
  • 当我实际运行 Defender/MSE 的内置更新功能并意识到更新在 Update-MpSignature 失败的情况下正常工作时,我开始回溯并测试其他我认为不起作用的场景,因为它们通过 powershell 失败了

因此,基本上,当您使用 Appleoddity 的指南解决问题时,请确保不要仅依赖 powershell 和 Update-MpSignature 来测试您正在做的事情。YMMV,但就我而言,我从未能够成功运行 Update-MpSignature。我得出结论,我设置错了,但经过更多测试后,我发现 defender 本身正在更新,没有问题,只有 powershell 有问题。

答案4

这是我每小时在服务器上运行一次的 powershell 脚本,然后我只需将客户端指向它即可。重点是不要提取文件。Windows Defender 指向 exe 本身。

$vdmpathbase = 'E:\VirusDef\latest\x64'
$vdmpackage = $vdmpathbase + '\mpam-fe.exe'
cmd /c "del $vdmpackage /q"
Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64' -OutFile $vdmpackage

相关内容