Как включить / отключить функцию приложения в группе ресурсов в Azure - PullRequest
0 голосов
/ 05 апреля 2019

Я пишу powershell скрипт, который будет работать в runbook .Этот скрипт сначала отключит функцию apps в группе ресурсов, затем другой аналогичный скрипт включит функции apps в группе ресурсов.

Я уже пробовал приведенный ниже скриптно он не включает функцию приложения

$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)
}

1 Ответ

0 голосов
/ 08 апреля 2019

Полагаю, вы видели вывод вашей книги запусков, она выглядела как на скриншоте ниже. Таким образом, вы думаете, что ваш скрипт не включает функцию app.

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

...