PowerShell中无法找到指定AD身份验证上下文类型求解决
问题:无法找到类型
[Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] 尝试编写以下PowerShell代码,调用Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext类型:
$authUrl = "https://login.windows.net/${tenantId}" $authContext = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext]$authUrl $cred = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential $applicationId,$key
已执行模块安装和导入操作:
Install-Module -Name AzureAD -AllowClobber Import-Module -Name AzureAD
但执行代码时始终报错:
Unable to find type [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext].
解决方案
- 手动加载目标程序集
AzureAD模块虽包含相关依赖,但可能未自动加载对应程序集。可手动定位并加载:
# 获取AzureAD模块的安装路径 $modulePath = (Get-Module AzureAD -ListAvailable).ModuleBase # 加载ADAL程序集 Add-Type -Path (Join-Path $modulePath "Microsoft.IdentityModel.Clients.ActiveDirectory.dll")
- 改用AzureAD模块内置认证方法
AzureAD模块提供了更简洁的原生认证接口,无需手动调用旧版ADAL类型:
# 通过应用凭据连接AzureAD Connect-AzureAD -TenantId $tenantId -ApplicationId $applicationId -ClientSecret $key # 或直接获取访问令牌 $token = Get-AzureADAccessToken -Resource "https://graph.microsoft.com" -TenantId $tenantId -ApplicationId $applicationId -ClientSecret $key
- 安装ADAL专用PowerShell模块(备选)
如果必须使用旧版ADAL类型,可直接安装专门的ADAL模块:
Install-Module -Name ADAL.PS -AllowClobber Import-Module ADAL.PS
安装完成后即可直接使用Microsoft.IdentityModel.Clients.ActiveDirectory命名空间下的所有类型。
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

