【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString

简介: 将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。

问题描述

把PowerShell Function部署到Azure Function App后,发现在不同的环境中,使用Get-AzAccessToken函数得到的返回值类型发生了变化。

正常情况为 System.Security.SecureString 类型(加密类型字符串),但遇见异常的时候类型为System.String(明文字符串),导致了后面获取AccessToken处理时,因类型不对而报错。

正确的类型要求如下:

如果遇见了类型显示为System.String的情况下,如何来缓解这个问题呢?

 

问题解答

在PowerShell Function的 profile.ps1 文件中增加 变量 $env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN 并设置值为 false, 这样就可以是的PowerShell返回AccessToken的时候不适用纯文本(PlainText)。

操作步骤截图如下

 

出现这种情况的解释

Az.Accounts 模块从 5.0 开始计划引入一个破坏性变更,将默认返回值从明文(plain text)改为 SecureString。然而,在变更发布前,Azure Functions 团队评估后认为这会对现有 PowerShell Function 应用造成重大影响,因为用户在未进行任何更改的情况下就会遭遇运行中断。

为了确保 Azure Functions 应用的稳定性,Azure Function团队做出了一个特例处理: Get-AzAccessToken Functions 环境中运行时,它将默认保留 5.0 之前的行为,返回明文。 当然,命令仍然支持 -AsSecureString 参数,该行为保持不变。

虽然锁定旧 Runtime 看似解决了问题,但这并非推荐做法,因其伴随更多潜在问题。如把Function运行时版本指定为  4.1037.1.23605,可以作为一个临时方案。

 

但是,Azure Function还是建议最正确的解决方案是:在profile.ps1中增加 环境变量  $env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN  并设置为false。

 

参考资料

Azure PowerShell release notes : https://learn.microsoft.com/en-us/powershell/azure/release-notes-azureps?view=azps-14.4.0#1400---may-2025

Az.Accounts 5.0.0

  • Changed the default output access token of 'Get-AzAccessToken' from plain text to 'SecureString'.
  • Removed the warning message about failing to initialize PSStyle in automation runbooks. [#26155]
  • Increased the timeout for tab-completion of location, resource group, etc. to 10 seconds.

 



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
10月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
465 0
|
11月前
|
存储 JSON JavaScript
[go]byte类型, string 类型, json 类型
本文介绍了Go语言中byte类型的基本概念、特点及用法。byte是8位无符号整数,取值范围为0-255,常用于二进制数据操作,如网络通信和文件读写。文章还详细说明了byte与字符串的转换、遍历byte数据以及与其他类型间的转换。此外,探讨了Go中json.Marshal和json.Unmarshal函数实现[]byte与JSON间的转换,并对比了[]byte与JSON的区别,帮助开发者更好地理解其应用场景与差异。
380 2
【Function App】在PowerShell Function中指定特殊的Microsoft.Graph.Users版本
在Azure Function App中运行PowerShell Function时,通过Requirements.psd1文件管理模块版本。若需将“Microsoft.Graph.Users”从最新版2.26.0改回2.23.0以避免冲突,可通过以下步骤解决:1) 在requirements.psd1中明确指定版本为2.23.0 2) 在profile.ps1中添加`Import-Module Microsoft.Graph.Users -RequiredVersion 2.23.0`语句。此方法确保加载特定版本模块
230 18
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
328 2
|
7月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1303 139
|
7月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
587 137
|
7月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
352 154
|
8月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
267 0
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1375 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡