为何Test-AzureName始终返回False?Azure脚本执行问题排查
问题分析与解决方案
你的问题核心在于**Test-AzureName是旧版Azure Service Management(ASM)模块的命令**,而你脚本里创建存储账户用的是New-AzureRmStorageAccount——这是Azure Resource Manager(ARM)模块的命令,两个模块的资源体系完全不互通,所以Test-AzureName根本无法识别ARM模式下的存储账户,自然总是返回False。
另外首次运行只显示开头的Running ps_example.ps1,大概率是因为Test-AzureName命令在你的环境里要么没正确加载ASM模块,要么你的Azure上下文是ARM模式,导致命令执行出错但没抛出明显错误,脚本直接卡在这一步之后的逻辑没执行。
正确的解决方案:用ARM模块的命令检查存储账户
把Test-AzureName替换成ARM模块对应的检查命令,比如Get-AzureRmStorageAccount,修改后的脚本如下:
Write-Host "Running ps_example.ps1" $resourceGroupName = 'myGroupName' $storageName = "psexample" $storageType = "Standard_LRS" $location = "centralus" # 改用ARM模块的命令检查存储账户是否存在 $existingStorage = Get-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -Name $storageName -ErrorAction SilentlyContinue if ($existingStorage) { 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 }
额外说明
-ErrorAction SilentlyContinue的作用是当存储账户不存在时,不抛出错误信息,避免脚本中断。- 确保你已经登录了ARM模式的Azure账户(用
Connect-AzureRmAccount命令),并且当前上下文正确指向你的订阅。 - 如果你还在混用ASM和ARM模块,建议尽快迁移到ARM模块,因为ASM已经被微软弃用,不再提供支持。
内容的提问来源于stack exchange,提问作者Don Branson
相关产品推荐
相关产品推荐

