获取订阅的存储帐户名称,然后根据结果创建名称

时间:2018-03-15 08:48:09

标签: powershell azure azure-storage

我的存储帐户命名约定必须在存储帐户名称的末尾有一个数字,例如storageaccount01

当我创建一个新帐户时,我需要确保不要复制任何存储名称。我不能在这个项目中使用uniqueid,它必须是上面的命名约定。

使用powershell获取订阅存储帐户的最佳方法是检查存储帐户的名称,然后在下一个可用编号上创建存储帐户。所以例如,如果我检索存储帐户的名称,并且我们有storageaccount01,storageaccount02,这意味着下一个可用的将是storageaccount03。这是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

  1. 使用Get-AzureRmStorageAccount检索订阅的所有存储帐户
  2. 使用Where-Object cmdlet
  3. 过滤所需的帐户名称
  4. 删除帐户名称以使用e检索数字列表。 G。 -replace
  5. 使用Measure-Object cmdlet
  6. 确定最大数量
  7. 最后使用格式字符串
  8. 创建新的存储帐户名称

    示例:

    $accountprefix = 'storageaccount'
    
    $nextNumber = Get-AzureRmStorageAccount | 
        Where-Object {
            $_.StorageAccountName.StartsWith($accountprefix)
        } | 
        ForEach-Object {
            $_.StorageAccountName -replace $accountprefix
        } | Measure-Object -Maximum
    
    $newAccountName = '{0}{1}' -f $accountprefix, ($nextNumber.Maximum +1).ToString("#00")
    

答案 1 :(得分:1)

您也可以使用

Get-AzureRmStorageAccountNameAvailability -Name 'ContosoStorage03'

检查存储帐户名ContosoStorage03是否可用。

你可以做一个循环并写

$index = 0; 

while($true) 
{
    $name="contoso$index";
    $resp = Get-AzureRmStorageAccountNameAvailability -Name $name;

    if($resp.NameAvailable) { break; }

    $index++;
}

Write-Host "index: $index"