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

Azure自动化Runbook调用Connect-MgGraph遇PSCredential类型转换错误求助

问题根源

Microsoft Graph PowerShell SDK v2.x的Connect-MgGraph cmdlet里,-ClientSecret参数要求传入**System.Management.Automation.PSCredential类型的对象**,但你直接传了字符串格式的客户端密钥,导致类型转换失败,触发了报错。

修复方案

把字符串格式的clientSecret转换成PSCredential对象再传入即可,修改后的代码如下:

# 从自动化变量加载字符串
$clientId     = Get-AutomationVariable -Name "clientId"
$tenantId     = Get-AutomationVariable -Name "tenantId"
$clientSecret = Get-AutomationVariable -Name "clientSecret"

# 将客户端密钥字符串转为SecureString,再创建PSCredential对象
$secureSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($clientId, $secureSecret)

# 执行认证
try {
    Connect-MgGraph -ClientId $clientId -TenantId $tenantId -ClientSecret $credential -Scopes "https://graph.microsoft.com/.default"
    Write-Output "✅ 认证成功。"
}
catch {
    Write-Error "❌ 认证失败: $($_.Exception.Message)"
}
另一种可选方案(使用ClientSecretCredential)

也可以直接创建Azure.Identity.ClientSecretCredential对象,通过-ClientSecretCredential参数传入,这种方式更贴合SDK的现代认证逻辑:

# 从自动化变量加载字符串
$clientId     = Get-AutomationVariable -Name "clientId"
$tenantId     = Get-AutomationVariable -Name "tenantId"
$clientSecret = Get-AutomationVariable -Name "clientSecret"

# 创建ClientSecretCredential对象
$secretCredential = New-Object Azure.Identity.ClientSecretCredential -ArgumentList $tenantId, $clientId, $clientSecret

# 执行认证
try {
    Connect-MgGraph -ClientSecretCredential $secretCredential -Scopes "https://graph.microsoft.com/.default"
    Write-Output "✅ 认证成功。"
}
catch {
    Write-Error "❌ 认证失败: $($_.Exception.Message)"
}

⚠️ 注意:使用第二种方案时,需要确保你的Azure自动化账户中已经安装了Azure.Identity模块,可以在自动化账户的「模块」页面搜索添加该模块。

内容的提问来源于stack exchange,提问作者Vincent Mateo Bautista

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:42:42