在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。
答案 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。