PowerShell执行Connect-ExchangeOnline报错:无法加载System.Net.Http程序集
ExchangeOnlineManagement连接报错(System.Net.Http 4.2.0.0找不到)排查方案
确认.NET Framework版本是否达标:
ExchangeOnlineManagement 3.0.0实际要求.NET Framework 4.7.2及以上版本,仅4.6无法满足需求。执行以下命令查看当前.NET版本的Release值:reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release对应版本参考:
- 4.7.2 → 461808
- 4.8 → 528040
若低于4.7.2,升级至对应版本后重试命令。
修复程序集绑定问题:
- 先检查当前加载的System.Net.Http版本:
[System.Reflection.Assembly]::LoadWithPartialName("System.Net.Http") - 若版本不匹配,可添加模块级绑定重定向:
编辑C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.0.0\netFramework\ExchangeOnlineManagement.psd1,在文件中新增或修改AssemblyBinding节点:"AssemblyBinding" = @{ "DependentAssembly" = @{ "AssemblyIdentity" = @{ "Name" = "System.Net.Http" "PublicKeyToken" = "b03f5f7f11d50a3a" "Culture" = "neutral" } "BindingRedirect" = @{ "OldVersion" = "0.0.0.0-4.2.0.0" "NewVersion" = "4.2.0.0" } } } - 或者添加全局绑定重定向:
编辑C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config,在<runtime>节点内插入:<dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> </dependentAssembly>
- 先检查当前加载的System.Net.Http版本:
重装ExchangeOnlineManagement模块:
- 卸载现有模块:
Uninstall-Module -Name ExchangeOnlineManagement -Force -AllVersions - 删除残留目录:
C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement - 以管理员身份重新安装指定版本:
Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.0.0 -Force
- 卸载现有模块:
检查PowerShell版本兼容性:
该模块要求PowerShell 5.1及以上,执行$PSVersionTable.PSVersion确认主版本≥5,若版本过低需升级至PowerShell 5.1。验证System.Net.Http文件存在性:
检查C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Net.Http.dll是否存在,若缺失,从同版本正常服务器复制该文件,或使用.NET Framework修复工具修复系统组件。
内容的提问来源于stack exchange,提问作者Kjbojang1es
相关产品推荐
相关产品推荐

