azure-functions - 如何在 Azure Functions 3.x PowerShell 7 中调用 Azure PowerShell 模块命令?
问题描述
我需要在 Azure Functions 3 中运行 Azure PowerShell 模块命令 ( https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-5.2.0 ) 脚本。
我不想Install-Module
在每个函数调用上都运行。我希望有更好的方法来做到这一点。Azure PowerShell 模块相当大。
我正在阅读以下文档,但找不到任何关于如何调用 Azure PowerShell 模块命令的参考资料 https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-powershell?标签=门户
如何在 Azure Functions 3.x PowerShell 7 中调用 Azure PowerShell 模块命令?
解决方案
在这种情况下不需要使用Install-Module
,目前,当您在门户中创建 powershell 功能时,它会Az
默认通过依赖管理功能为您安装模块。
您可以检查App files
门户中的刀片以确保您的功能应用程序配置正确,如果没有,请按如下所示进行更改。
host.json
{
"version": "2.0",
"managedDependency": {
"Enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
}
}
requirements.psd1
@{
# For latest supported version, go to 'https://www.powershellgallery.com/packages/Az'.
'Az' = '5.*'
}
profile.ps1
if ($env:MSI_SECRET) {
Disable-AzContextAutosave -Scope Process | Out-Null
Connect-AzAccount -Identity
}
通过上面的设置,函数应用会自动为你安装模块并使用你的函数应用的MSI(托管标识)Az
登录Az
模块(命令在做),很方便。profile.ps1
要在函数中使用Az
命令,您只需为您的函数应用启用 MSI并将 RBAC 角色分配给您的 MSI(取决于具体情况,例如,如果您想列出订阅/资源组中的所有 Web 应用,您需要Reader
在订阅/资源组范围内为您的 MSI赋予角色)。
然后在你的函数代码中,直接使用Az
命令就可以了,没有别的。
样本:
$a = Get-AzWebApp -ResourceGroupName joyRG
Write-Host $a.Name
推荐阅读
- python - 如何将 zip 存档中的文件分类到 Python 中的列表中?
- javascript - 在导入的组件之间传递 React 状态
- azure-databricks - 使用服务主体从 DataBricks 连接到 Synapse
- react-native - 在本机反应中创建下拉列表
- javascript - JSDoc 正确记录事件监听器
- r - 计算问卷分数的功能(不同时间,因素变量)
- python - Python & Discord.py,如果服务器 ID = 'ServerID' 离开
- xamarin.forms - 在 Xamarin.Form Shell Flyout 中单击项目菜单时如何重新加载页面
- android - Android xml通过子约束布局避免重叠约束布局边框半径
- node.js - 单行节点API初始化