Почему этот скрипт powershell для пометки виртуальных машин Azure тегами из файла csv не работает? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь пометить уже развернутые виртуальные машины Azure тегами из файла CSV. Сценарий должен быть в состоянии найти виртуальные машины, используя мои столбцы RG и VM, назначить теги из столбцов Company, DNS, CN и Type и заменить старые теги CN (если они существуют).

Я нашел этот скрипт и изменил его для своих нужд, но не могу заставить его работать.

$csv = import-csv "C:\Powershell scripts\Tagging\Tagging.csv"

$csv | ForEach-Object {
    # Retrieve existing tags
    $tags = (Get-AzureRmResource -ResourceGroupName -Name $_.RG -ResourceType "Microsoft.Compute/virtualMachines" -Name $_.VM).Tags

    # Define new value pairs from CSV
    $newTags = @{
        company     = $_.Company
        dns         = $_.DNS
        type        = $_.Type
        CN          = $_.CN
    }

    # Add new tags to existing set (overwrite conflicting tag names)
    foreach($CN in $newTags.Keys){
        $tags[$_] = $newTags[$_]
    }

    # Update resource with new tag set
    Set-AzureRmResource  -ResourceGroupName -Name $_.RG -Name $_.VM -Tag $tags -ResourceType "Microsoft.Compute/virtualMachines" -verbose
}

мой CSV-файл выглядит примерно так:

Company,DNS,Type,CN,RG,VM
CompanyOne,VM1,Test,10917,machine774_rg,machine774
CompanyTwo,VM2,Development,10917,machine776_rg,machine776
...

Powershell выдает мне ошибки при попытке запустить скрипт:

Get-AzureRmResource : Missing an argument for parameter 'ResourceGroupName'. Specify a parameter of type 'System.String' and try again.
At line:3 char:34
+     $tags = (Get-AzureRmResource -ResourceGroupName -Name $_.RG -Reso ...
+                                  ~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Get-AzureRmResource], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet

Cannot index into a null array.
At line:15 char:9
+         $tags[$_] = $newTags[$_]
+         ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

1 Ответ

0 голосов
/ 10 июля 2019

Эта часть -ResourceGroupName -Name $_.RG неверна, она должна выглядеть следующим образом:

Get-AzureRmResource -ResourceGroupName $_.RG -ResourceType "Microsoft.Compute/virtualMachines" -Name $_.VM

Также команда Set-AzureRmResource должна быть:

Set-AzureRmResource -ResourceGroupName $_.RG -ResourceType "Microsoft.Compute/virtualMachines" -Name $_.VM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...