0

New to powershell.. I have 2 Json , the first one gotten from a file, the second one that I am converting after doing a query. I would like to update a value in the tag section of the second files if it happens that values in name section are sames in both json :

json file 1 is created and read/loaded with the below :

$service = Get-AzResource -ResourceGroupName $sourcergname  | select-object Name, ResourceGroupName, ResourceType, Location, ResourceId, Tags
ConvertTo-Json $service | Out-File "$subscriptionid\resourceGroups\$sourcergname\Source_RG_Service_level_tags.json"
$RG_services_level_tags_json = Get-Content "$subscriptionid\resourceGroups\$sourcergname\Source_RG_Service_level_tags.json" | Out-String | ConvertFrom-Json

Then it gives :

[
        {
            "Name":  "vnet-prd-secretenv",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/virtualNetworks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/virtualNetworks/vnet-prd-secretenv",
            "Tags":  {

                    }
        },
        {
            "Name":  "host-1-prd-secretenv_DataDisk_0",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/disks/host-1-prd-secretenv_DataDisk_0",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv_DataDisk_2",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/disks/host-1-prd-secretenv_DataDisk_2",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv-nsg",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/networkSecurityGroups",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/networkSecurityGroups/host-1-prd-secretenv-nsg",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv_DataDisk_3",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/disks/host-1-prd-secretenv_DataDisk_3",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv-puip",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/publicIPAddresses",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/publicIPAddresses/host-1-prd-secretenv-puip",
            "Tags":  null
        },
        {
            "Name":  "rgprdsecretrgdiag",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Storage/storageAccounts",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Storage/storageAccounts/rgprdsecretrgdiag",
            "Tags":  {

                    }
        },
        {
            "Name":  "host-1-prd-secretenv_DataDisk_1",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/disks/host-1-prd-secretenv_DataDisk_1",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-meetechssf622",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/networkInterfaces",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/networkInterfaces/host-1-prd-meetechssf622",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/virtualMachines",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/virtualMachines/host-1-prd-secretenv",
            "Tags":  {
                        "services_tag_1":  "dummy_services_tag_1",
                        "services_tag_2":  "dummy_services_tag_2"
                    }
        },
        {
            "Name":  "host-1-prd-secretenv_OsDisk_1_02133b0f90d645a7a309f68fbceaa743",
            "ResourceGroupName":  "RG-PRD-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/RG-PRD-secretrg/providers/Microsoft.Compute/disks/host-1-prd-secretenv_OsDisk_1_02133b0f90d645a7a309f68fbceaa743",
            "Tags":  null
        },
        {
            "Name":  "host-1-prd-secretenv/Microsoft.Insights.VMDiagnosticsSettings",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/virtualMachines/extensions",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/virtualMachines/host-1-prd-secretenv/extensions/Microsoft.Insights.VMDiagnosticsSettings",
            "Tags":  null
        },
        {
            "Name":  "secretenv.com",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/dnszones",
            "Location":  "global",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/dnszones/secretenv.com",
            "Tags":  {

                    }
        },
        {
            "Name":  "secretenv.com",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.DomainRegistration/domains",
            "Location":  "global",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.DomainRegistration/domains/secretenv.com",
            "Tags":  {

                    }
        },
        {
            "Name":  "secretenv",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Storage/storageAccounts",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Storage/storageAccounts/secretenv",
            "Tags":  {

                    }
        },
        {
            "Name":  "host-1-prd-secretenv/MicrosoftMonitoringAgent",
            "ResourceGroupName":  "RG-PRD-secretrg",
            "ResourceType":  "Microsoft.Compute/virtualMachines/extensions",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/RG-PRD-secretrg/providers/Microsoft.Compute/virtualMachines/host-1-prd-secretenv/extensions/MicrosoftMonitoringAgent",
            "Tags":  null
        },
        {
            "Name":  "testmigrationmourad",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Storage/storageAccounts",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Storage/storageAccounts/testmigrationmourad",
            "Tags":  {

                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd",
            "Tags":  {
                        "StartStopVMVersion":  "1.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AzureAutomationTutorialPython2",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AzureAutomationTutorialPython2",
            "Tags":  {

                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AzureAutomationTutorial",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AzureAutomationTutorial",
            "Tags":  {

                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AzureAutomationTutorialScript",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AzureAutomationTutorialScript",
            "Tags":  {

                    }
        },
        {
            "Name":  "secretenv-laws",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.OperationalInsights/workspaces",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.OperationalInsights/workspaces/secretenv-laws",
            "Tags":  {

                    }
        },
        {
            "Name":  "AutoStop_VM_Child",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Insights/scheduledqueryrules",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Insights/scheduledqueryrules/AutoStop_VM_Child",
            "Tags":  {
                        "hidden-link:/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.OperationalInsights/workspaces/secretenv-laws":  "Resource"
                    }
        },
        {
            "Name":  "SequencedStartStop_Parent",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Insights/scheduledqueryrules",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Insights/scheduledqueryrules/SequencedStartStop_Parent",
            "Tags":  {
                        "hidden-link:/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.OperationalInsights/workspaces/secretenv-laws":  "Resource"
                    }
        },
        {
            "Name":  "StartStop_VM_Notification",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Insights/actiongroups",
            "Location":  "global",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Insights/actiongroups/StartStop_VM_Notification",
            "Tags":  null
        },
        {
            "Name":  "ScheduledStartStop_Parent",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Insights/scheduledqueryrules",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Insights/scheduledqueryrules/ScheduledStartStop_Parent",
            "Tags":  {
                        "hidden-link:/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.OperationalInsights/workspaces/secretenv-laws":  "Resource"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AutoStop_VM_Child_ARM",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AutoStop_VM_Child_ARM",
            "Tags":  {
                        "version":  "1.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/ScheduledStartStop_Base_Classic",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/ScheduledStartStop_Base_Classic",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/ScheduledStartStop_Child_Classic",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/ScheduledStartStop_Child_Classic",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AutoStop_CreateAlert_Child",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AutoStop_CreateAlert_Child",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AutoStop_Disable",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AutoStop_Disable",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/ScheduledStartStop_Parent",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/ScheduledStartStop_Parent",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AutoStop_VM_Child",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AutoStop_VM_Child",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/SequencedStartStop_Parent",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/SequencedStartStop_Parent",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/AutoStop_CreateAlert_Parent",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/AutoStop_CreateAlert_Parent",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "stop-start-meetechsfrwrd/ScheduledStartStop_Child",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Automation/automationAccounts/runbooks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Automation/automationAccounts/stop-start-meetechsfrwrd/runbooks/ScheduledStartStop_Child",
            "Tags":  {
                        "version":  "2.0.0.0"
                    }
        },
        {
            "Name":  "Start-Stop-VM[secretenv-laws]",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.OperationsManagement/solutions",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.OperationsManagement/solutions/Start-Stop-VM[secretenv-laws]",
            "Tags":  {

                    }
        },
        {
            "Name":  "ntwvpn-1-prd-secretenv-ip",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/publicIPAddresses",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/publicIPAddresses/ntwvpn-1-prd-secretenv-ip",
            "Tags":  null
        },
        {
            "Name":  "ntwvpn-1-prd-meetechs254",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Network/networkInterfaces",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Network/networkInterfaces/ntwvpn-1-prd-meetechs254",
            "Tags":  null
        },
        {
            "Name":  "ntwvpn-1-prd-secretenv",
            "ResourceGroupName":  "rg-prd-secretrg",
            "ResourceType":  "Microsoft.Compute/virtualMachines",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rg-prd-secretrg/providers/Microsoft.Compute/virtualMachines/ntwvpn-1-prd-secretenv",
            "Tags":  null
        },
        {
            "Name":  "ntwvpn-1-prd-secretenv_OsDisk_1_0f679e0fb7ac4be0be87275e50c83020",
            "ResourceGroupName":  "RG-PRD-secretrg",
            "ResourceType":  "Microsoft.Compute/disks",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/RG-PRD-secretrg/providers/Microsoft.Compute/disks/ntwvpn-1-prd-secretenv_OsDisk_1_0f679e0fb7ac4be0be87275e50c83020",
            "Tags":  null
        },
        {
            "Name":  "ntwvpn-1-prd-secretenv/MMAExtension",
            "ResourceGroupName":  "RG-PRD-secretrg",
            "ResourceType":  "Microsoft.Compute/virtualMachines/extensions",
            "Location":  "westeurope",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/RG-PRD-secretrg/providers/Microsoft.Compute/virtualMachines/ntwvpn-1-prd-secretenv/extensions/MMAExtension",
            "Tags":  null
        }
    ]

Second json is obtained and read with the below :

 $service_level_tags_target = Get-AzResource -ResourceGroupName $targetrgname  | select-object Name, ResourceGroupName, ResourceType, Location, ResourceId, Tags
 ConvertTo-Json $service_level_tags_target 

Then, it gives :

    [
        {
            "Name":  "mover_vnet",
            "ResourceGroupName":  "rgmover_test-uaenorth",
            "ResourceType":  "Microsoft.Network/virtualNetworks",
            "Location":  "uaenorth",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/virtualNetworks/mover_vnet",
            "Tags":  null
        },
        {
            "Name":  "vmtobemoved-ip",
            "ResourceGroupName":  "rgmover_test-uaenorth",
            "ResourceType":  "Microsoft.Network/publicIPAddresses",
            "Location":  "uaenorth",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/publicIPAddresses/vmtobemoved-ip",
            "Tags":  null
        },
        {
            "Name":  "vmtobemoved-nsg",
            "ResourceGroupName":  "rgmover_test-uaenorth",
            "ResourceType":  "Microsoft.Network/networkSecurityGroups",
            "Location":  "uaenorth",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/networkSecurityGroups/vmtobemoved-nsg",
            "Tags":  null
        },
        {
            "Name":  "vmtobemoved746",
            "ResourceGroupName":  "rgmover_test-uaenorth",
            "ResourceType":  "Microsoft.Network/networkInterfaces",
            "Location":  "uaenorth",
            "ResourceId":  "/subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/networkInterfaces/vmtobemoved746",
            "Tags":  null
        }
    ]
4
  • 1
    This is totally possible, the thing is at least here in your examples, none of the values in Name of the 2nd Json are the same as in the 1st Json. I can post an answer to show you how you could do it but I can't use these as an example since there are no matches. Commented Jun 9, 2021 at 19:40
  • Yes, the names are different in this example.. this is just that I do not have one handy yet . I am looking at having 2 loop "foreach", but not sure, any idea ? Commented Jun 9, 2021 at 19:46
  • Sure, I'll modify the JSON2 so it has at least to matches with JSON1, but how do you want the Tag update to be performed? Do you want to do it with a user input or you want to do it through code? Commented Jun 9, 2021 at 19:48
  • Thru code, I acyually already have the Azure command for that : Update-AzTag -ResourceId $RG_level_tags_target.ResourceId -Tag $tagsaddon -Operation Merge Commented Jun 9, 2021 at 19:50

1 Answer 1

1

So, for the first question, how to find the items of the 2nd JSON where the Name value is in the Name values of the 1st JSON:

  • First you can convert the first one to an object (like you're already doing):
$RG_services_level_tags_json = Get-Content "$subscriptionid\resourceGroups\$sourcergname\Source_RG_Service_level_tags.json" -Raw |
ConvertFrom-Json

$service_level_tags_target = Get-AzResource -ResourceGroupName $targetrgname |
Select-Object Name, ResourceGroupName, ResourceType, Location, ResourceId, Tags
  • Now there are many ways of doing this, one way you can find the items on $service_level_tags_target is the following. Note: I updated the names of the 2nd JSON so at least we get 2 matches:
# Example 1 using -in Operator
$result = $service_level_tags_target.Where({$_.Name -in $RG_services_level_tags_json.Name})

# Example 2 using -contains Operator
$result = $service_level_tags_target.Where({$RG_services_level_tags_json.Name -contains $_.Name})

I would recommend a read on Comparison Operators to see which one fits best for your need. You could also use -match if you want to partially match for example.

This returns the 2 matches:

Name              : stop-start-meetechsfrwrd/AutoStop_VM_Child
ResourceGroupName : rgmover_test-uaenorth
ResourceType      : Microsoft.Network/virtualNetworks
Location          : uaenorth
ResourceId        : /subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/virtualNetworks/mover_vnet
Tags              : 

Name              : host-1-prd-secretenv_DataDisk_1
ResourceGroupName : rgmover_test-uaenorth
ResourceType      : Microsoft.Network/networkSecurityGroups
Location          : uaenorth
ResourceId        : /subscriptions/XXXXX-XXXXX-XXXXX/resourceGroups/rgmover_test-uaenorth/providers/Microsoft.Network/networkSecurityGroups/vmtobemoved-nsg
Tags              : 

For the second question, how to update the Tags, you would need to define which is the new Tag you want for each match.

foreach($resGroup in $result)
{
    $tagsaddon = # This needs to be defined here!
    Update-AzTag -ResourceId $resGroup.ResourceId -Tag $tagsaddon -Operation Merge
}
Sign up to request clarification or add additional context in comments.

1 Comment

@MouIdri no problem, happy to help :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.