Powershell 为什么Test AzureName总是返回false?
在Azure中运行此脚本:Powershell 为什么Test AzureName总是返回false?,powershell,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 a
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.
第二次运行显示:
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。您正在Azure中组合RM和SM cmdlet。Test-AzureName是一个服务管理cmdlet,而New-AzureRmStorageAccount是一个资源管理器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。有趣。我试过user891818的答案,但不起作用。“他的if语句是否有误?”当注意到评论时,顿布兰森回答得很好。所以应该是这样的:如果((Get-AzureRmStorageAccountNameAvailability-Name$storageName)-eq$True){New-AzureRmStorageAccount-ResourceGroupName$ResourceGroupName-Name$storageName-SkuName Standard_LRS}Get-AzureRmStorageAccountNameAvailability不返回布尔值,它返回一个Microsoft.Azure.Management.Storage.Models.CheckNameAvailabilityResult,其中包含一个布尔值。检查是否有效…我发现NameAvailable起了作用。我编辑了你的答案来说明这一点,但请随意调整它,因为你认为合适。