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

ADAL v5.2.9 PowerShell调用AcquireTokenAsync提示方法不存在求助

问题修复方案

1. 变量名拼写错误修正

代码中定义的认证上下文变量为$authenticationContext,但报错行调用时使用了未定义的$authContext,变量名不匹配是报错的直接原因,先统一变量名。

2. ADAL v5版本接口适配

ADAL v5.2.9对异步方法重载做了调整,原AcquireTokenAsync针对客户端证书凭证的重载已拆分,替换为专用的AcquireTokenForClientAsync方法即可,同时增加异步等待逻辑避免偶发空值。

3. 修正后完整代码

function Get-AccessToken
{
    $tenantID = "<id>" 
    $AuthUri = "https://login.microsoftonline.com/$tenantID"    
    # SPN配置
    $AppId = ""
    # 证书配置
    $clientCertificate = Get-Item -Path Cert:\CurrentUser\My\<cert thumb>
    $resource = "<RestApi>"
    $adal = "<path to the dll>\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
    [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
    $authenticationContext = New-Object -TypeName Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext -ArgumentList $AuthUri
    $certificateCredential = New-Object -TypeName Microsoft.IdentityModel.Clients.ActiveDirectory.ClientAssertionCertificate -ArgumentList ($AppId, $clientCertificate)
    # 替换适配v5版本的方法,添加异步等待
    $authToken = $authenticationContext.AcquireTokenForClientAsync($resource, $certificateCredential)
    $authToken.Wait()
    $accessToken = $authToken.Result.AccessToken.Trim()
    $accessToken | Clip
    Write-Host "Token length"
    Write-Host $accessToken.Length
    $accessToken
}
# 获取访问令牌
$token = Get-AccessToken

可选兼容方案

如果要保留原AcquireTokenAsync写法,补充第三个参数$null适配v5版本的重载要求即可:

$authToken = $authenticationContext.AcquireTokenAsync($resource, $certificateCredential, $null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 10:15:05