Azure自动化账户连接Az与MgGraph报错:字符串无法转SecureString
问题分析与解决:Azure自动化Runbook中Connect-MgGraph的AccessToken报错
原因分析
核心问题是参数类型不匹配:
Get-AzAccessToken返回的$token.Token是普通字符串类型- 当前版本的
Connect-MgGraph的-AccessToken参数要求传入SecureString类型(一种加密的安全字符串,不是明文字符串) - 博客中的代码基于旧版Microsoft Graph PowerShell模块编写,当时
-AccessToken参数还支持普通字符串;模块更新后参数类型要求变更,直接传明文字符串就会触发类型转换失败的报错。
解决办法
方案1:将字符串Token转换为SecureString
修改代码,把明文Token转成符合要求的SecureString类型即可,代码如下:
# Connect to Microsoft Graph within Azure Automation Connect-AzAccount -Identity $token = Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com" # 将普通字符串转为SecureString $secureToken = ConvertTo-SecureString $token.Token -AsPlainText -Force Connect-MgGraph -AccessToken $secureToken
方案2:直接用托管身份连接(更推荐)
如果Azure自动化账户已配置系统托管身份,可直接通过-Identity参数连接Microsoft Graph,无需中转获取Token,代码更简洁:
# 直接用自动化账户托管身份连接Microsoft Graph Connect-MgGraph -Identity
注意:使用此方案前,需确保自动化账户的托管身份已被授予Microsoft Graph的对应权限(比如设置AAD账户审计属性所需的权限)。
内容的提问来源于stack exchange,提问作者ianc
相关产品推荐
相关产品推荐

