Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions src/internal/functions/Get-AzOpsResourceDefinition.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,10 @@
if (-not $SkipResource) {
Write-AzOpsMessage -LogLevel Verbose -LogString 'Get-AzOpsResourceDefinition.Processing.Resource.Discovery' -LogStringValues $scopeObject.Name -Target $ScopeObject
try {
# Skip resources with null or empty resource group
$query = "resources | where isnotempty(resourceGroup)"
$SkipResourceType | ForEach-Object { $skipResourceTypes += ($(if($skipResourceTypes){","}) + "'" + $_ + "'") }
$query = "resources | where type !in~ ($skipResourceTypes)"
$query = $query + " and type !in~ ($skipResourceTypes)"
if ($IncludeResourceType -ne "*") {
$IncludeResourceType | ForEach-Object { $includeResourceTypes += ($(if($includeResourceTypes){","}) + "'" + $_ + "'") }
$query = $query + " and type in~ ($includeResourceTypes)"
Expand All @@ -309,6 +311,11 @@
if ($resourcesBase) {
$resources = @()
foreach ($resource in $resourcesBase) {
# Skip resources with null or empty resource group to prevent Export-AzResourceGroup errors
if ([string]::IsNullOrEmpty($resource.resourceGroup)) {
Write-AzOpsMessage -LogLevel Debug -LogString 'Get-AzOpsResourceDefinition.Processing.Resource.SkippingNoResourceGroup' -LogStringValues $resource.name, $resource.id -Target $resource
continue
}
if ($resourceGroups | Where-Object { $_.name -eq $resource.resourceGroup -and $_.subscriptionId -eq $resource.subscriptionId }) {
Write-AzOpsMessage -LogLevel Verbose -LogString 'Get-AzOpsResourceDefinition.Processing.Resource' -LogStringValues $resource.name, $resource.resourcegroup -Target $resource
$resources += $resource
Expand Down Expand Up @@ -347,6 +354,11 @@
$tempExportPath = [System.IO.Path]::GetTempPath() + (New-Guid).ToString() + '.json'
try {
& $azOps {
# Validate resource group name before calling Export-AzResourceGroup
if ([string]::IsNullOrEmpty($resource.resourceGroup)) {
Write-AzOpsMessage -LogLevel Debug -LogString 'Get-AzOpsResourceDefinition.Processing.ChildResource.SkippingNoResourceGroup' -LogStringValues $resource.name, $resource.id -Target $resource
return
}
$exportParameters = @{
Resource = $resource.id
ResourceGroupName = $resource.resourceGroup
Expand Down Expand Up @@ -386,7 +398,7 @@
}
catch {
& $azOps {
Write-AzOpsMessage -LogLevel Warning -LogString 'Get-AzOpsResourceDefinition.ChildResource.Warning' -LogStringValues $resource.resourceGroup, $_ -FunctionName "Get-AzOpsResourceDefinition" -ModuleName "AzOps"
Write-AzOpsMessage -LogLevel Warning -LogString 'Get-AzOpsResourceDefinition.ChildResource.Warning' -LogStringValues $resource.resourceGroup, ($exportParameters | Out-String -NoNewline), $_ -FunctionName "Get-AzOpsResourceDefinition" -ModuleName "AzOps"
}
}
if (Test-Path -Path $tempExportPath) {
Expand Down
6 changes: 4 additions & 2 deletions src/localized/en-us/Strings.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
'Get-AzOpsPolicySetDefinition.ManagementGroup' = 'Retrieving PolicySet Definition for ManagementGroup {0} ({1})' # $ScopeObject.ManagementGroupDisplayName, $ScopeObject.ManagementGroup
'Get-AzOpsPolicySetDefinition.Subscription' = 'Retrieving PolicySet Definition for {0} Subscription objects' # $Subscription.count

'Get-AzOpsResourceDefinition.ChildResource.Warning' = 'Failed to export childResources in [{0}]. Warning: [{1}]' # $resourceGroup.ResourceGroupName, $_
'Get-AzOpsResourceDefinition.ChildResource.Warning' = 'Failed to export childResources in [{0}] with parameters [{1}]. Warning: [{2}]' # $resource.resourceGroup, $exportParameters | Out-String -NoNewline, $_
'Get-AzOpsResourceDefinition.Finished' = 'Finished processing scope [{0}]' # $scopeObject.Scope
'Get-AzOpsResourceDefinition.ManagementGroup.Processing' = 'Processing Management Group [{0}] ({1})' # $ScopeObject.ManagementGroupDisplayName, $ScopeObject.ManagementGroup
'Get-AzOpsResourceDefinition.Processing' = 'Processing resources at [{0}]' # $Scope
Expand All @@ -134,10 +134,12 @@
'Get-AzOpsResourceDefinition.Processing.Resource' = 'Processing resource [{0}] in resource Group [{1}]' # $resource.Name, $resourceGroup.ResourceGroupName
'Get-AzOpsResourceDefinition.Processing.Resource.Discovery' = 'Searching for resources in [{0}]' # $scopeObject.Name
'Get-AzOpsResourceDefinition.Processing.Resource.Discovery.NotFound' = 'No resources found in [{0}]' # $scopeObject.Name
'Get-AzOpsResourceDefinition.Processing.Resource.Warning' = 'Failed to get resources in {0}]. Consider excluding the resource causing the failure with [Core.SkipResourceType] setting' # $scopeObject.Name
'Get-AzOpsResourceDefinition.Processing.Resource.SkippingNoResourceGroup' = 'Skipping resource [{0}] at [{1}], null or empty ResourceGroup property. Cannot export resources' # $resource.name, $resource.id
'Get-AzOpsResourceDefinition.Processing.Resource.Warning' = 'Failed to get resources in [{0}]. Consider excluding the resource causing the failure with [Core.SkipResourceType] setting' # $scopeObject.Name
'Get-AzOpsResourceDefinition.SkippingResourceGroup' = 'SkipResourceGroup switch used, skipping resource Group discovery' #
'Get-AzOpsResourceDefinition.SkippingResources' = 'SkipResource switch used, skipping resource discovery.' #
'Get-AzOpsResourceDefinition.Processing.ChildResource' = 'Processing resource [{0}] in resource Group [{1}]' # $resource.Name, $resourceGroup.ResourceGroupName
'Get-AzOpsResourceDefinition.Processing.ChildResource.SkippingNoResourceGroup' = 'Skipping resource [{0}] at [{1}], null or empty ResourceGroup property. Cannot export child resources' # $resource.name, $resource.id
'Get-AzOpsResourceDefinition.SkippingChildResources' = 'SkipChildResource switch used, skipping child resource discovery' #

'Get-AzOpsRoleAssignment.Assignment' = 'Found assignment {0} for role {1}' # $roleAssignment.id, $roleAssignment.properties.roleDefinitionId
Expand Down