为什么Test-AzureName总是返回false?

时间:2018-04-25 18:51:24

标签: powershell

在Azure中运行此脚本:

Write-Host "Running ps_example.ps1"

$resourceGroupName = 'myGroupName'
$storageName = "psexample"
$storageType = "Standard_LRS"
$location = "centralus"

if (Test-AzureName -Storage $storageName) {
    Write-Host "Use existing storage account - $storageName"
} Else {
    Write-Host "Make new storage account - $storageName"
    New-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -Name $storageName -Type $storageType -Location $location
}

第一轮显示:

Running ps_example.ps1
Make new storage account - psexample

第二轮显示:

Running ps_example.ps1
Make new storage account - psexample
The storage account named psexample is already taken.

为什么呢?这似乎表明if (Test-AzureName -Storage $storageName)总是返回false。

如果我告诉Azure使用powershell 1,则版本为1.113.5。请求版本2.0导致2.0.11。两者的行为都是一样的。

编辑:

运行此:

$result = Test-AzureName -Storage $storageName
Write-Host $result
无论psexample是否存在,

始终打印False。

1 个答案:

答案 0 :(得分:1)

您正在Azure中合并RM和SM cmdlet。 Test-AzureName是Service Management cmdlet,而New-AzureRmStorageAccount是Resource Manager cmdlet。

您可能想尝试使用

if ((Get-AzureRmStorageAccountNameAvailability -Name $storageName).NameAvailable) {
    Write-Host "Make new storage account - $storageName"
    New-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -Name $storageName -Type $storageType -Location $location
} Else {
    Write-Host "Use existing storage account - $storageName"
}

检查名称,或者您可以使用以下方式创建存储帐户:

New-AzureStorageAccount

取决于您要使用的内容,SM或RM。