【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
问题描述
在Azure Function中创建一个PowerShell的函数后,其中使用了Get-AzMaintenanceUpdate,New-AzApplyUpdate 等指令,但是在执行时错误。错误截图:

问题分析及解决
第一步:分析错误日志
在错误截图中,可以清晰的发现问题【ERROR: The term 'Get-AzMaintenanceUpdate' is not recognized as the name of a cmdlet, function, script file, or operable program. 】这里正好说明了在Function App所运行的实例中,没有安装支持Get-AzMaintenanceUpdate命令的模块包。网上搜索发现,这个方法属于Az.Maintenance包。所以接下来就是需要在Azure Function App中安装Az包。
第二步:如何安装所需要的PowerShell依赖包
方式一:在“Azure Functions PowerShell 开发人员指南”一文的"依赖项管理"中,谈论到可以使用 requirements.psd1 文件加载依赖性。
依赖项管理
Functions 允许你利用 PowerShell 库来管理依赖项。 启用依赖项管理后,使用 requirements.psd1 文件来自动下载所需的模块。 启用此行为的方法是:在 host.json 文件的根目录中,将
managedDependency属性设置为true,如以下示例所示:{
"managedDependency": {
"enabled": true
}
}创建新的 PowerShell 函数项目时,默认情况下会启用依赖项管理,并且会包括 Azure
Az模块。 当前支持的最大模块数为 10。 支持的语法为MajorNumber.*或确切的模块版本,如以下 requirements.psd1 示例所示:@{
Az = '1.*'
SqlServer = '21.1.18147'
}更新 requirements.psd1 文件时,会在重启后安装更新的模块。
修改成功后,在Kudu中所见的效果如下:

方式二:上传本地Az.Maintenance包文件到Function App 站点中,详细步骤为
- 在本地 PowerShell 安装Az.Maintenance这个moudle,安装好之后找到这个安装的文件夹
- 登录到kudu,在 CMD>site>wwwroot><your Function Name>这个目录下创建一个名为moudles 的文件夹, 把第一步中安装好的这个moudle里面的内容上传到这个文件夹下
- 找到执行文件,执行导入模块指令
Import-Module "D:\home\site\wwwroot\<your Function Name>\modules\Az.Maintenance.psd1"
附录一:Function App中所执行的PowerShell脚本
# Input bindings are passed in via param block.
param($Timer) # Check if any maintenance updates are available for your dedicated host
$isMaintenance = Get-AzMaintenanceUpdate `
-ResourceGroupName MaintenanceGroup `
-ResourceName MaintenanceInstance `
-ResourceType hosts `
-ResourceParentName MaintenanceGroup `
-ResourceParentType hostGroups `
-ProviderName Microsoft.Compute # if available, apply the update. Else, write that there are "no availabe updates" to the log
if ($isMaintenance -ne $null)
{
New-AzApplyUpdate `
-ResourceGroupName MaintenanceGroup `
-ResourceName MaintenanceInstance `
-ResourceType hosts `
-ResourceParentName MaintenanceGroup `
-ResourceParentType hostGroups `
-ProviderName Microsoft.Compute
}
else {
Write-Output 'No Updates Available' }
参考资料:
Azure Functions PowerShell 开发人员指南: https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-reference-powershell?tabs=portal#dependency-management
Get-AzMaintenanceUpdate: https://docs.microsoft.com/en-us/powershell/module/az.maintenance/get-azmaintenanceupdate?view=azps-5.9.0
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块的更多相关文章
- Azure Data Factory(四)集成 Logic App 的邮件通知提醒
一,引言 上一篇有介绍到使用Azure Data Factory 复制数据,然后有集成 Azure DevOps 实现CI/CD,但是对于真正的项目来说,这些肯定是不够的,比如说在执行 Azure P ...
- 微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core
写在前面 在日常开发中,我这边比较熟悉的配置中心有,携程Apollo,阿里Nacos(配置中心,服务治理一体) 之前文章: Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触 总体来 ...
- Azure Data Factory(三)集成 Azure Devops 实现CI/CD
一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...
- 【Azure Developer】App Service + PubSub +JS 实现多人版黑客帝国文字流效果图
需要描述 1)实现黑客帝国文字流效果图,JS功能 2)部署在云中,让大家都可以访问,App Service实现 3)大家都能发送消息,并显示在文字流中,PubSub(websocket)实现 终极效果 ...
- 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性
写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...
- 微软Azure配置中心 App Configuration (三):配置的动态更新
写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...
- $(document).ready(function (){}) , $(function(){}) , $().ready(function(){}) , jquery(function(){}) , (function($){})(jquery)有什么区别
$(document).ready(function(){...}) , $().ready(function(){...}) , $(function(){...}) , jquery(funct ...
- 详解立即执行函数(function(){}()),(function(){})()
要知道这几种写法之间的区别,我们要先聊些题外话——js中函数的两种命名方式,即表达式和声明式. 函数的声明式写法为:function foo(){/*...*/},这种写法会导致函数提升,所有func ...
- js (function(){}()),(function(){})(),$(function(){});之间的区别
参考:https://blog.csdn.net/stpice/article/details/80586444 (function(){}()), (function(){})() 均为立即执行函数 ...
- js中(function(){}()),(function(){})(),$(function(){});之间的区别
1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...
随机推荐
- 隐私集合求交(PSI)协议研究综述
摘要 隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集.隐私集合求交在数据共享,广告转化 ...
- es6默认传参 es5的默认传参
在默认传参在实际中座中还是用的比较多的. 它可以用来解决,用户没有给定值的时候,默认给一个指定的值. es6默认传参 es5的默认传参 //es6 function say(a = 4) { cons ...
- 【一个构想】pull方式获取expoter上的数据,如何更加精简?
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu 公众号:一本正经的瞎扯 背景 已知:在prometheus中,每个业务节点通过prometheu ...
- Leetcode 面试题22. 链表中倒数第k个节点 Java语言求解
题目链接 https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 题目内容 输入一个链表,输出该链 ...
- ILRuntime性能测试
我们公司有一个Unity原生开发语言C#写的项目,目前已经在安卓测试过多次,上架IOS在考虑热更,所以对ILRuntim进行性能测试,在测试过程中已经按照官方文档进行了CLR绑定和生成Release的 ...
- Python中局部放大图案例
例子一: 先上完整代码和效果图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1.ins ...
- 创建多线程方式(Java)
一.创建自定义线程类继承Thread 自定义线程类代码 package com.demo05; public class MyThread extends Thread { @Override pub ...
- 【实用小技巧】RSA非对称加解密及XML&PEM格式互换方案
最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止tim ...
- JS Leetcode 154. 寻找旋转排序数组中的最小值 II 题解分析
壹 ❀ 引 早在10个月前,也就是去年,我记录了JS leetcode 寻找旋转排序数组中的最小值 题解分析,你不得不了解的二分法一题,那么这篇文章记录它的升级版,来自LeetCode154. 寻找旋 ...
- JS 前序遍历、中序遍历、后序遍历、层序遍历详解,深度优先与广度优先区别,附leetcode例题题解答案
壹 ❀ 引 按照一天一题的速度,不知不觉已经刷了快两多月的leetcode了,因为本人较为笨拙,一道简单的题有时候也会研究很久,看着提交了两百多次,其实也才解决了70来道简单题,对于二分法,双指针等也 ...