簡體   English   中英

powershell 加載 json 迭代並使用鍵和值

[英]powershell load json iterate and use keys and values

powershell 的新手。我有 2 個 Json,第一個是從文件中獲取的,第二個是我在查詢后轉換的。 如果兩個 json 中的名稱部分中的值相同,我想更新第二個文件的標簽部分中的值:

json 文件 1 使用以下內容創建和讀取/加載:

$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

然后它給出:

[
        {
            "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
        }
    ]

獲得第二個 json 並讀取以下內容:

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

然后,它給出:

    [
        {
            "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
        }
    ]

那么,對於第一個問題,如何找到第二個 JSON 的名稱值在第一個 JSON 的名稱值中的項目:

  • 首先,您可以將第一個轉換為 object(就像您已經在做的那樣):
$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
  • 現在有很多方法可以做到這一點,您可以在$service_level_tags_target上找到項目的一種方法如下。 注意:我更新了第二個 JSON 的名稱,所以至少我們得到了 2 個匹配項
# 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})

我建議閱讀比較運算符,看看哪一個最適合您的需要。 例如,如果您想部分匹配,也可以使用-match

這將返回 2 個匹配項:

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              : 

對於第二個問題,如何更新標簽,您需要為每個匹配定義哪個是您想要的新標簽。

foreach($resGroup in $result)
{
    $tagsaddon = # This needs to be defined here!
    Update-AzTag -ResourceId $resGroup.ResourceId -Tag $tagsaddon -Operation Merge
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM