Microsoft Graph模块加载冲突:Get-MgBetaPrivilegedAccessResource无法执行
问题场景
执行以下PowerShell命令时触发模块加载冲突:
$SubscriptionPIMID = (Get-MgBetaPrivilegedAccessResource -PrivilegedAccessId 'AzureResources' -Filter "externalId eq '/subscriptions/$subscriptionId'").Id
这段代码属于脚本的一部分,脚本先执行Connect-MgGraph,后续在单独文件中运行上述代码。Get-MgBetaPrivilegedAccessResource归属Microsoft.Graph.Beta.Identity.Governance模块,但运行时抛出错误:
已在模块“Microsoft.Graph.Beta.Identity.Governance”中找到“Get-MgBetaPrivilegedAccessResource”命令,但无法加载该模块,原因如下:[无法加载文件或程序集“Microsoft.Graph.Authentication, Version=2.26.1.0, Culture=neutral, PublicKeyToken=xxxxxx”。已加载同名程序集] 有关详细信息,请运行“Import-Module Microsoft.Graph.Beta.Identity.Governance”。
手动执行Import-Module Microsoft.Graph.Beta.Identity.Governance无法解决问题,执行Get-Module Microsoft.Graph.Authentication -ListAvailable返回的可用版本信息如下:
解决方案
1. 统一Microsoft Graph模块版本
冲突核心是已加载的Microsoft.Graph.Authentication版本与Beta模块依赖的版本不兼容,可通过统一版本解决:
- 卸载所有已安装的Microsoft Graph相关模块:
Get-Module Microsoft.Graph* -ListAvailable | Uninstall-Module -Force -AllVersions - 重新安装完整的Microsoft Graph Beta模块包(自动匹配依赖版本):
Install-Module Microsoft.Graph.Beta -Force -AllowClobber
2. 指定版本加载模块
若需保留多版本模块,可手动指定依赖版本加载:
# 移除已加载的不兼容Authentication模块 Remove-Module Microsoft.Graph.Authentication -Force -ErrorAction SilentlyContinue # 导入Beta模块要求的Authentication版本 Import-Module Microsoft.Graph.Authentication -RequiredVersion 2.26.1.0 -Force # 导入目标Beta模块 Import-Module Microsoft.Graph.Beta.Identity.Governance -Force
3. 用隔离会话运行代码
若上述方法无效,可创建独立PowerShell会话隔离模块环境:
$scriptBlock = { Connect-MgGraph $subscriptionId = "你的订阅ID" $SubscriptionPIMID = (Get-MgBetaPrivilegedAccessResource -PrivilegedAccessId 'AzureResources' -Filter "externalId eq '/subscriptions/$subscriptionId'").Id return $SubscriptionPIMID } $SubscriptionPIMID = Invoke-Command -ScriptBlock $scriptBlock
内容的提问来源于stack exchange,提问作者learner

