如何在azure中的资源组中启用/禁用功能应用程序

问题描述 投票:0回答:1

我正在编写一个将在Runbook中运行的powershell脚本。此脚本将首先禁用资源组中的功能应用程序,然后另一个类似的脚本将启用资源组中的功能应用程序。

我已经尝试过以下脚本,但它不启用功能应用程序

$connectionName = "AzureRunAsConnection"
try {
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint  } catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

$RGName = Get-AutomationVariable -Name 'DRPrimaryResourceGroupName'
$FAppResources = Get-AzureRmResource -ResourceType "Microsoft.Web/sites" -ResourceGroupName $RGName -ExpandProperties  
$LAppResources = Get-AzureRmResource -ResourceType "Microsoft.Logic/workflows" -ResourceGroupName $RGName -ExpandProperties 

ForEach ($FAResource in $FAppResources) {
        Write-Output ("*****************************************************************************************")
        Write-Output ("Starting FunctionApp "+ $FAResource.ResourceName+ " in Resource Group " +$RGName)
        Write-Output ("*****************************************************************************************")
        Start-AzureRmWebApp -ResourceGroupName $RGName -Name $FAResource.ResourceName
        Write-Output ($FAResource.ResourceName + " and its status is " +  $FAResource.Properties.State)
}
ForEach ($LAResource in $LAppResources) {  
        Write-Output ("*****************************************************************************************")
        Write-Output ("Enabling Logic App "+ $LAResource.ResourceName +" in Resource Group"+ $RGName)  
        Write-Output ("***************************************************************************************")
        Set-AzureRmLogicApp -ResourceGroupName $RGName -Name $LAResource.ResourceName -State Enabled -Force
        Write-Output ($LAResource.ResourceName + " and its status is " +  $LAResource.Properties.State)
}
azure powershell azure-functions azure-runbook
1个回答
0
投票

我想你已经看过你的Runbook的输出,它看起来像下面的截图。所以你认为你的脚本没有启用功能应用程序。

enter image description here

实际上,你的脚本启用了功能应用程序,但行Write-Output ($FAResource.ResourceName + " and its status is " + $FAResource.Properties.State)只能写出旧状态。

要解决这个问题,您可以尝试添加行$newstate = (Get-AzureRmWebApp -ResourceGroupName $RGName -Name $FAResource.ResourceName).State,它在启动功能应用程序后获取新状态,写出$newstate,然后它将正常工作。

完整的脚本:

ForEach ($FAResource in $FAppResources) {
        Write-Output ("*****************************************************************************************")
        Write-Output ("Starting FunctionApp "+ $FAResource.ResourceName+ " in Resource Group " +$RGName)
        Write-Output ("*****************************************************************************************")
        Start-AzureRmWebApp -ResourceGroupName $RGName -Name $FAResource.ResourceName
        $newstate = (Get-AzureRmWebApp -ResourceGroupName $RGName -Name $FAResource.ResourceName).State
        Write-Output ($FAResource.ResourceName + " and its status is " +  $newstate)
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.