Массовое создание группы управления Azure

#powershell-3.0 #azure-powershell

#powershell-3.0 #azure-powershell

Вопрос:

Я пытаюсь запустить приведенную ниже силовую оболочку-

 New-AzManagementGroup -GroupName 'Contoso' -DisplayName 'Contoso Group' -ParentId /providers/Microsoft.Management/managementGroups/Infra'
  

Автоматизировать задачу, чтобы я мог развернуть ее в нескольких группах управления в иерархии.
Я использовал файл CSV для импорта следующих полей GroupName DisplayName и Paraentid , но, похоже, ничего не происходит.
Может быть, я делаю что-то очень глупое или не хватает какого-то синтаксиса.
Мне удалось создать простой powershell ниже-

 $DataSheet = Import-Csv -path “xx.csv”
foreach($data in $DataSheet)
{
$GroupName=$data.GroupName
$DisplayName=$data.DisplayName
$ParentId=$data.ParentId
New-AzManagementGroup -GroupName $GroupName -DisplayName $DisplayName  -ParentId $ParentId
}
  

Но как я могу добавить в этот скрипт отслеживание ошибок и убрать требование указывать полный идентификатор ресурса (-ParentID), который довольно длинный
Этот скрипт импортирует данные из Excel, который имеет три заголовка GroupName, DisplayName и ParentID.

Спасибо,

Комментарии:

1. Для отслеживания ошибок вы можете поместить «New-AzManagementGroup xxx» в блок try-catch. И не могли бы вы подробнее объяснить «убрать требование указывать полный идентификатор ресурса»? Если вы не указываете родительский идентификатор в файле .csv, то где вы хотите его получить?

2. @Ivan Yang благодарит за ваш ответ, родительский идентификатор и проблема с обработкой ошибок устранены. Теперь моя проблема заключается в том, что если родительская группа отсутствует, создание новой группы управления завершится ошибкой, поскольку родительская группа не существует. Какой синтаксис я могу добавить в power-shell, чтобы он сначала создал родительскую группу, если она отсутствует (согласно данным Excel), а затем продолжил создание новой группы управления, т. Е. дочерней группы управления. Имеет ли это какой-либо смысл для вас?

Ответ №1:

Убедитесь, что вы можете прочитать файл CSV и он в правильном формате. С помощью приведенного ниже фрагмента кода я смог прочитать CSV и создать дочерние группы управления. Чтобы не указывать родительский идентификатор снова и снова, вы можете сначала получить родительский объект и использовать его в своем коде.

Приведенный ниже фрагмент кода должен помочь.

 $parentObject = Get-AzManagementGroup -GroupName "ParentGroup"
$DataSheet = Import-Csv -path "xx.csv"
foreach($data in $DataSheet)
{
   $GroupName=$data.GroupName
   $DisplayName=$data.DisplayName
   New-AzManagementGroup -GroupName $GroupName -DisplayName $DisplayName   
   -ParentObject $parentObject
}
  

Ниже приведены данные в формате CSV.

таблица CSV

Надеюсь, приведенная выше информация поможет.

Комментарии:

1. спасибо за ваш ответ. Но родительский идентификатор может отличаться для некоторой дочерней группы управления. Причина, по которой я хочу устранить необходимость добавления родительского идентификатора в Excel из-за его длинного имени ресурса и избежать любых опечаток при его вставке. Пожалуйста, смотрите ссылку ниже ( learn.microsoft.com/en-us/azure/governance/management-groups ) для получения дополнительной информации. Во-вторых, как я могу добавить другую функцию для отслеживания любой ошибки, возникшей во время создания группы управления сценарием.