Azure runbook автоматизации Завершено до запуска кода - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть ситуация, когда в Azure журнале выполнения автоматизации появляется состояние «Завершено» и не выполняется «фактический» код. Я вставил код ниже. Он создает концентратор событий внутри пространства имен. Код отлично работает на локальном компьютере, но не выполняется в Runbook.

Я написал «запись-вывод« Объявление локальных переменных для использования в скрипте »» ->, чтобы проверить, работает ли печать. Тем не менее, код не выходит за рамки этого. Я уверен, что мне чего-то не хватает. Пожалуйста, помогите мне.

Param(
    [Parameter(Mandatory=$true)]
    [string] $NameSpaceNameName,

    [Parameter(Mandatory=$true)]
    [string[]] $EventhubNames,

    [Parameter(Mandatory=$true)]
    [string] $ProjectId,

    [Parameter(Mandatory=$true)]
    [int] $PartitionCount,

    [Parameter(Mandatory=$true)]
    [string]$Requested_for,

    [Parameter(Mandatory=$true)]
    [string]$Comments
) 

## Login to Azure using RunAsAccount
$servicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'

Write-Output ("Logging in to Az Account...")


Login-AzAccount `
    -ServicePrincipal `
    -TenantId $servicePrincipalConnection.TenantId `
    -ApplicationId $servicePrincipalConnection.ApplicationId `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 

write-output "Declaring local variables for use in script"
## Declaring local variables for use in script
$Creation_date = [System.Collections.ArrayList]@()
$ResourceGroups = Get-AzResourceGroup 
$provided_name_space_exists = $false 



## Change context to Platform subscription
select-azsubscription -subscription "GC302_Sub-platform_Dev"

## Create Event Hub
    foreach($Resourcegroup in $ResourceGroups){
        Write-Host("Processing the Resource Group: {0} " -f $Resourcegroup.ResourceGroupName) 
        $EventhubNameSpaces = Get-AzEventHubNamespace -ResourceGroupName $ResourceGroup.ResourceGroupName
        # Iterate over each Namespace. Fetch the Resource Group that contains the provided Namespace
        foreach($EHNameSpace in $EventhubNameSpaces){
            if($EHNameSpace.Name -eq $NameSpaceName){
                $provided_name_space_exists = $true
                Write-Host ("Found the provided Namespace in resource group: {0}" -f $Resourcegroup.ResourceGroupName)
                Write-Output ("Found the provided Namespace in resource group: {0}" -f $Resourcegroup.ResourceGroupName)
                $nameSpace_resource_group =  $ResourceGroup.ResourceGroupName
                # Fetch the existing Event Hubs in the Namespace
                $existing_event_hubs_list = Get-AzEventHub -Namespace $EHNameSpace.Name -ResourceGroupName $nameSpace_resource_group

                ## Check provided EH for uniqueness

                if($existing_event_hubs_list.Count -le 1000){
                       for($i = 0;$i -lt $EventhubNames.Count;$i++){
                        if($existing_event_hubs_list.name -notcontains $EventhubNames[$i]){
                            $EventHub = New-AzEventHub -ResourceGroupName $nameSpace_resource_group -Namespace $EHNameSpace.Name -Name $EventhubNames[$i] -PartitionCount $PartitionCount
                            $date = $EventHub.CreatedAt
                            $Creation_date+= $date.GetDateTimeFormats()[46]
                        }else{
                            Write-Host ("Event hub: '{0}' already exists in the NameSpace: {1}. skipping this Event hub creation" -f $EventhubNames[$i], $EHNameSpace.Name)
                        }
                    }
                }else{
                    Write-Host ("The Namespace - {0} has Event Hubs count greater or equal to 1000." -f $EHNameSpace.Name)
                    Write-Host ("Please refer the Link for Eevent Hubs quota/limit: 'https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-quotas#event-hubs-dedicated---quotas-and-limits'")
                    exit
                }
            }
        }
    }
    # Print a message that Namespace does not exist
    if($provided_name_space_exists -eq $false){
        Write-Host ("Provided NameSpace: {0} does not exist." -f $NameSpaceName)
        exit
    }

Снимок экрана:

enter image description here

1 Ответ

0 голосов
/ 11 апреля 2020

У вас есть $ NameSpaceNameName в разделе параметров модуля Runbook, но позже в модуле Runbook на 50-й строке вы получите $ NameSpaceName , что не совпадает с указанным в разделе параметров. Исправьте это, и тогда это должно работать как ожидалось. Одно из предложений заключается в том, чтобы всегда иметь блок else, где бы он ни находился, если он будет блокировать, чтобы преодолеть такие проблемы в будущем.

Приветствия!

...