Microsoft.Windows.RemoteAttestation.Client.PowerShell.ni.dll 核心功能与缺失影响
组件定位:该文件是 .NET 原生映像(Native Image),后缀 .ni.dll 表示它由 NGen 工具对托管程序集 Microsoft.Windows.RemoteAttestation.Client.PowerShell.dll 预编译生成,通常位于 %WinDir%\assembly\NativeImages_v4.0.30319_64\ 或对应 .NET Framework 目录下。它隶属于 Windows 远程证明(Remote Attestation)客户端栈,是 Windows Defender System Guard 与设备健康证明(Device Health Attestation,DHA)体系在 PowerShell 层的执行入口。
一、核心功能
- 承载 cmdlet 的原生执行代码:为 Microsoft.Windows.RemoteAttestation.Client.PowerShell 模块中的 Get-RemoteAttestationResult、Invoke-RemoteAttestation 等命令提供已编译的机器码,绕过运行期 JIT 编译,加快模块加载速度并降低工作集内存占用。
- 封装 TPM 2.0 与引证数据采集:负责调用底层 CryptoAPI 与 TBS(TPM Base Services),读取 AIK(Attestation Identity Key)证书、PCR 度量值以及 TCG 事件日志,构造完整的平台完整性证据链。
- 对接远程证明服务:通过 HTTPS/JSON 协议与 Windows Remote Attestation Service(WRAS)及外部依赖方通信,提交引证(Quote)数据并解析返回的证明结果。
- PowerShell 与 CLR 之间的类型编组:完成参数绑定、对象序列化与管道输出对象的构造,将非托管证明结果映射为可直接消费的 PowerShell 对象。
- 原生映像缓存协同:与 CLR 原生映像加载器、NGen 缓存交互,在受信任的已签名映像路径下安全加载,降低映像劫持风险。
二、缺少该 DLL 的影响
| 影响层面 | 具体表现 |
| 模块加载 | Import-Module 或 Get-Command 抛出 Could not load file or assembly、FileNotFoundException,提示无法加载 Microsoft.Windows.RemoteAttestation.Client.PowerShell。 |
| 执行性能 | 若同路径仍存在 IL 程序集,CLR 会回退为 JIT 解释执行,功能尚存但首次加载延迟增大、内存占用上升;若 IL 程序集同样缺失,功能彻底不可用。 |
| 证明链路 | Get-RemoteAttestationResult 等命令无法执行,TPM 引证数据与设备健康声明采集失败,完整性度量结果无法回传。 |
| 合规策略 | 与 Azure AD 条件访问、Intune 合规策略、SCCM 配置基线绑定的设备证明检查报错或被跳过,终端准入判定异常。 |
| 自动化脚本 | 依赖该模块的登录脚本、计划任务与运维流水线出现终止性错误,.NET Runtime 事件日志中记录程序集加载异常。 |
修复提示:可执行 sfc /scannow 与 DISM /Online /Cleanup-Image /RestoreHealth 修复系统映像,或重装对应的 .NET Framework 与 Windows 更新包,再以 ngen install 重建原生映像缓存。