diff --git a/src/internal/functions/Get-AzOpsResourceDefinition.ps1 b/src/internal/functions/Get-AzOpsResourceDefinition.ps1 index 65829dea..5331387f 100644 --- a/src/internal/functions/Get-AzOpsResourceDefinition.ps1 +++ b/src/internal/functions/Get-AzOpsResourceDefinition.ps1 @@ -404,32 +404,37 @@ Write-PSFMessage -Level Verbose @msgCommon -String 'Get-AzOpsResourceDefinition.SubScription.Processing.Resource' -StringValues $resource.Name, $resourceGroup.ResourceGroupName -Target $resource & $azOps { ConvertTo-AzOpsState -Resource $resource -ExportRawTemplate:$runspaceData.ExportRawTemplate -StatePath $runspaceData.Statepath } if (-not $using:SkipChildResource) { - $exportParameters = @{ - Resource = $resource.ResourceId - ResourceGroupName = $resourceGroup.ResourceGroupName - SkipAllParameterization = $true - Path = $tempExportPath - DefaultProfile = $Context | Select-Object -First 1 - } - Export-AzResourceGroup @exportParameters -Confirm:$false -Force | Out-Null - $exportResources = (Get-Content -Path $tempExportPath | ConvertFrom-Json).resources - foreach ($exportResource in $exportResources) { - if (-not(($resource.Name -eq $exportResource.name) -and ($resource.ResourceType -eq $exportResource.type))) { - Write-PSFMessage -Level Verbose @msgCommon -String 'Get-AzOpsResourceDefinition.Subscription.Processing.ChildResource' -StringValues $exportResource.Name, $resourceGroup.ResourceGroupName -Target $exportResource - $ChildResource = @{ - resourceProvider = $exportResource.type -replace '/', '_' - resourceName = $exportResource.name -replace '/', '_' - parentResourceId = $resourceGroup.ResourceId - } - if (Get-Member -InputObject $exportResource -name 'dependsOn') { - $exportResource.PsObject.Members.Remove('dependsOn') - } - $resourceHash = @{resources = @($exportResource) } - & $azOps { - ConvertTo-AzOpsState -Resource $resourceHash -ChildResource $ChildResource -StatePath $runspaceData.Statepath + try { + $exportParameters = @{ + Resource = $resource.ResourceId + ResourceGroupName = $resourceGroup.ResourceGroupName + SkipAllParameterization = $true + Path = $tempExportPath + DefaultProfile = $Context | Select-Object -First 1 + } + Export-AzResourceGroup @exportParameters -Confirm:$false -Force -ErrorAction Stop | Out-Null + $exportResources = (Get-Content -Path $tempExportPath | ConvertFrom-Json).resources + foreach ($exportResource in $exportResources) { + if (-not(($resource.Name -eq $exportResource.name) -and ($resource.ResourceType -eq $exportResource.type))) { + Write-PSFMessage -Level Verbose @msgCommon -String 'Get-AzOpsResourceDefinition.Subscription.Processing.ChildResource' -StringValues $exportResource.Name, $resourceGroup.ResourceGroupName -Target $exportResource + $ChildResource = @{ + resourceProvider = $exportResource.type -replace '/', '_' + resourceName = $exportResource.name -replace '/', '_' + parentResourceId = $resourceGroup.ResourceId + } + if (Get-Member -InputObject $exportResource -name 'dependsOn') { + $exportResource.PsObject.Members.Remove('dependsOn') + } + $resourceHash = @{resources = @($exportResource) } + & $azOps { + ConvertTo-AzOpsState -Resource $resourceHash -ChildResource $ChildResource -StatePath $runspaceData.Statepath + } } } } + catch { + Write-PSFMessage -Level Warning -String 'Get-AzOpsResourceDefinition.ChildResource.Warning' -StringValues $resourceGroup.ResourceGroupName, $_ + } } else { Write-PSFMessage -Level Verbose @msgCommon -String 'Get-AzOpsResourceDefinition.Subscription.SkippingChildResource' -StringValues $resourceGroup.ResourceGroupName diff --git a/src/localized/en-us/Strings.psd1 b/src/localized/en-us/Strings.psd1 index ff283680..cd063eae 100644 --- a/src/localized/en-us/Strings.psd1 +++ b/src/localized/en-us/Strings.psd1 @@ -99,6 +99,7 @@ 'Get-AzOpsPolicySetDefinition.ManagementGroup' = 'Retrieving PolicySet Definition for ManagementGroup {0} ({1})' # $ScopeObject.ManagementGroupDisplayName, $ScopeObject.ManagementGroup 'Get-AzOpsPolicySetDefinition.Subscription' = 'Retrieving PolicySet Definition for Subscription {0} ({1})' # $ScopeObject.SubscriptionDisplayName, $ScopeObject.Subscription + 'Get-AzOpsResourceDefinition.ChildResource.Warning' = 'Failed to export childResources in [{0}]. Warning: [{1}]' # $resourceGroup.ResourceGroupName, $_ 'Get-AzOpsResourceDefinition.Finished' = 'Finished processing scope [{0}]' # $scopeObject.Scope 'Get-AzOpsResourceDefinition.ManagementGroup.Processing' = 'Processing Management Group [{0}] ({1})' # $ScopeObject.ManagementGroupDisplayName, $ScopeObject.ManagementGroup 'Get-AzOpsResourceDefinition.ManagementGroup.Subscription.NotFound' = 'Unable to locate subscription: {0} within AzOpsSubscriptions object' #child.Name