Я пытаюсь пометить уже развернутые виртуальные машины 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