You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 5.1高版本执行Connect-AzAccount遇类型加载错误求助

解决PowerShell 5.1高版本中加载自定义模块后Connect-AzAccount的程序集加载错误

针对你遇到的问题,核心原因是自定义模块与Az模块的System.Diagnostics.DiagnosticSource程序集版本冲突,且PowerShell 5.1高版本的程序集加载逻辑变化放大了这个冲突。以下是具体解决步骤:

1. 排查自定义模块的程序集依赖

  • 定位自定义模块路径:
    Get-Module -Name YourCustomModule -ListAvailable | Select-Object Name, Path
    
  • 检查模块脚本中是否手动加载了System.Diagnostics.DiagnosticSource程序集,如果有,移除该手动加载逻辑,让PowerShell自动优先加载Az模块依赖的版本。

2. 添加程序集绑定重定向配置

在自定义模块的根目录(与.psd1文件同目录)创建名为YourCustomModule.psd1.config的配置文件,填入以下内容(替换newVersion为Az模块实际使用的版本):

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
  • 可通过以下命令获取Az模块加载的DiagnosticSource版本:
    Import-Module Az.Accounts
    [System.Reflection.Assembly]::LoadWithPartialName("System.Diagnostics.DiagnosticSource").FullName
    

3. 调整自定义类的加载顺序

  • 先强制加载Az.Accounts模块,确保依赖的程序集先进入加载上下文,再实例化自定义类:
    Import-Module Az.Accounts -Force
    $myInstance = [MyClass]::new()
    
  • 如果自定义类定义在脚本模块中,将类的代码移至单独的.ps1文件,在模块中通过Import-Module .\MyClass.ps1 -Force加载,避免模块级别的程序集冲突。

4. 临时回退PowerShell版本(备选方案)

若上述方法无效,可卸载PowerShell 5.1的更新包回退至17763.5576版本:

  • 打开「设置-应用和功能-可选功能-查看已安装的更新」
  • 找到包含「Windows Management Framework 5.1」的更新包,卸载后重启系统

内容的提问来源于stack exchange,提问作者Adam Winter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:00