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

通过Runbook启停Azure Function App执行PowerShell脚本报错求助

Azure Function App 计划启停的PowerShell Runbook实现

直接用单条Update-AzFunctionAppSetting命令没法直接搞定,因为自动化账户的Runbook得先连上Azure订阅才行,不然命令找不到你的Function App,就会抛出那个“空值表达式”的错误。

错误根源

你碰到的You cannot call a method on a null-valued expression错误,本质是Runbook执行时没成功登录Azure,导致命令定位不到目标资源。

正确实现流程

1. 先完成Azure身份验证

Runbook里必须先加一段登录Azure的代码,用自动化账户自带的服务主体身份验证:

# 调用自动化账户的Azure连接资产(默认名称是AzureRunAsConnection)
$connectionName = "AzureRunAsConnection"
try {
    $servicePrincipalConn = Get-AutomationConnection -Name $connectionName
    Connect-AzAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConn.TenantId `
        -ApplicationId $servicePrincipalConn.ApplicationId `
        -CertificateThumbprint $servicePrincipalConn.CertificateThumbprint
}
catch {
    if (!$servicePrincipalConn) {
        throw "找不到连接资产 $connectionName,请检查自动化账户配置"
    } else {
        throw $_.Exception
    }
}

2. 用命令设置单个函数启停

验证通过后,再执行修改应用设置的命令,建议把Function App名、资源组名设成变量(或者Runbook参数),方便后续修改:

# 定义变量
$funcAppName = "MyFUNCTION_APP_NAME"
$rgName = "MyRESOURCE_GROUP_NAME"
$targetFuncName = "MyFunctionName"

# 禁用指定函数
Update-AzFunctionAppSetting -Name $funcAppName -ResourceGroupName $rgName -AppSetting @{"AzureWebJobs.$targetFuncName.Disabled" = "true"}

# 要启用的话,把值改成"false"就行
# Update-AzFunctionAppSetting -Name $funcAppName -ResourceGroupName $rgName -AppSetting @{"AzureWebJobs.$targetFuncName.Disabled" = "false"}

3. 额外:启停整个Function App(不是单个函数)

如果你要控制的是整个Function App服务,而不是单个函数,用Start-AzFunctionApp和Stop-AzFunctionApp更直接:

# 停止整个Function App
Stop-AzFunctionApp -Name $funcAppName -ResourceGroupName $rgName

# 启动整个Function App
Start-AzFunctionApp -Name $funcAppName -ResourceGroupName $rgName

注意点

  • 得确保自动化账户的服务主体有Function App所在资源组的Contributor权限,不然会提示权限不够。
  • 检查Runbook用的Az模块版本,尽量用新一点的版本(可以在自动化账户的“模块”页面查看和更新)。

内容的提问来源于stack exchange,提问作者zeeka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:45:29