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