Azure powershell 脚本 - 创建具有不同所有者的多个资源组

Azure powershell script - create multiple resource groups with different owners

我正在尝试创建一个循环脚本,该脚本将创建多个具有不同所有者的 RG。我在将不同所有者添加到资源组时遇到问题。

$RGNamesUSE = "RG-01", "RG-02", "RG-03"
$Owner = "user1@mail.com","User2@mail.com", "User3@mail.com"

foreach($rg in $RGNamesUSE)
{
New-AzResourceGroup -Name $rg -Location westeurope
}

我需要为每个 RG 添加所有者。应该像 RG-01 将拥有所有者 user1,RG-02 将拥有所有者 user2 等...我该怎么做?

您可以尝试下面的脚本,这将创建一个资源组并将用户分配为资源组的 "Owner":

$RGNamesUSE = "RG-01", "RG-02", "RG-03"
$Owner = "user1@mail.com","User2@mail.com","User3@mail.com"

For ($i=0; $i -le ($RGNamesUSE.length - 1); $i++) {
    $rg = $RGNamesUSE[$i];
    $userName = $Owner[$i];

    New-AzResourceGroup -Name $rg -Location westeurope
    New-AzRoleAssignment -SignInName $userName -RoleDefinitionName "Owner" -ResourceGroupName $rg
}

Jagrati 发布了正确答案,它满足您的要求。相反,我想挑战你的要求:)

我见过像你这样的代码。如果它是解决方案的一部分而不是一次性 运行,那么它们将很难维护并且很容易出错。

例如,如果以后有人添加了新的 RG,他们需要记住在适当的地方添加所有者,否则一切都会坏掉,而且问题可能会更糟,因为您可能甚至没有注意到在构建时和 运行 时都没有错误。

这就是为什么我更喜欢这些类型的结构,所有细节都在同一个地方并且相互关联:(try it here)

$ResourceGroups = @(
 @{
    "Name"="RG-01";
    "Owners"="user1.1@mail.com"
 },
 @{
    "Name"="RG-02";
    "Owners"="user2@mail.com"
 }
)

那么部署代码就非常容易了,不需要任何索引或任何其他魔术来按位置关联多个数据源

foreach($rg in $ResourceGroups)
{
    Write-Host "Creating resource group Name: $($rg.Name) with Owners: $($rg.Owners)"

    # Create the Resource group 
    New-AzResourceGroup -Name $rg.Name -Location westeurope

    # Assign roles.
    New-AzRoleAssignment -SignInName $rg.Owners -RoleDefinitionName "Owner" -ResourceGroupName $rg.Name
}

如果您需要为每个组或其他属性(例如不同区域中的每个资源组)添加更多角色分配,这也会更好