Чтение из текстового файла и преобразование в управляемые диски - PullRequest
0 голосов
/ 01 июня 2018

У меня есть список виртуальных машин в Azure, которые я пытаюсь преобразовать в управляемые диски.

У меня есть список виртуальных машин, я читаю из списка и экспортирую в csv, собирая имя группы ресурсов иvm name, однако я, похоже, получаю vms из всей подписки.

Также, когда я пытаюсь импортировать CSV, когда я запускаю $comps, он возвращает правильную информацию в CSV, однако я не могу передать их до следующих строк.

CSV формат

ResouceGroupName Имя RG-01 vm-01 RG-01 vm-02 RG-01 vm-03 RG-01 vm-04

Код IПытаюсь

Login-AzureRmAccount

$sub = Get-AzureRmSubscription | ogv -PassThru

Select-AzureSubscription -SubscriptionId $sub

$virtualmachines = Get-Content C:\temp\vm.txt | % {

Get-Azurermvm | select ResourceGroupName,Name | export-csv c:\temp\vm.csv -NoClobber -NoTypeInformation -Append

}

$comps = Import-Csv c:\temp\Vm.csv | 

foreach ($Comp in $comps) 
{

Stop-AzureRmVM -ResourceGroupName $_.ResourceGroupName -Name $_.Name -Force

ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $_.ResourceGroupName -VMName $_.Name

}

Заранее спасибо ..

1 Ответ

0 голосов
/ 01 июня 2018

Для вашей проблемы вы экспортируете виртуальные машины в CSV-файл и используете его в коде foreach.Поэтому нет необходимости использовать команду:

$virtualmachines = Get-Content C:\temp\vm.txt | % {

Get-Azurermvm | select ResourceGroupName,Name | export-csv c:\temp\vm.csv -NoClobber -NoTypeInformation -Append

}

И все ваши виртуальные машины в группе ресурсов, вы можете получить их напрямую с помощью ResourceGroupName.

Для конвейера в foreach это не нужно.Вы можете использовать следующий код, который я немного изменил в вашем коде, и он хорошо работает.

Login-AzureRmAccount

$sub = Get-AzureRmSubscription | ogv -PassThru

Select-AzureRmSubscription -Subscription $sub

Get-Azurermvm –ResourceGroupName RG-01 | select ResourceGroupName,Name | export-csv c:\temp\vm.csv -NoClobber -NoTypeInformation -Append

$comps = Import-Csv c:\temp\Vm.csv 

foreach ($Comp in $comps)
{

Stop-AzureRmVM -ResourceGroupName $Comp.ResourceGroupName -Name $Comp.Name -Force

ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $Comp.ResourceGroupName -VMName $Comp.Name

}

Это скриншот моего результата.

enter image description here

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