Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
随着Azure PowerShell 1.0.0+的推出,越来越多的客户开始使用新的版本的Azure PowerShell。此版本的PowerShell最大的改变在于将原先的Switch-AzureMode的指令移除,将原本在其下的指令改以加上Rm的方式存在,如Get-AzureResource改为Get-AzureRmResource。如此一来,在使用之前就不需要先做AzureMode的切换。因此,PowerShell 1.0.0的改变主要影响的是使用Azure资源管理器 (Azure Resource Manager,以下简称ARM)的用户,对于使用Azure服务管理器(Azure Service Manager,以下简称ASM)的用户影响并不大。(关于两者差异可参考下列常见问题)
然而,由于此次版本的改变,许多用户在验证身份时发生了问题:
1. 如同以前版本使用Add-AzureAccount –Environment AzureChinaCloud输入中国Azure的身份。却发现在使用AzureRm相关指令时要求重新以Login-AzureRmAccount输入身份。
2. 当输入Login-AzureRmAccount –Environment AzureChinaCloud时,出现错误。
这是因为此次改版之后将ASR和ARM两者的身份信息及环境参数分开因此需要分别输入并需要对环境参数进行额外操作。
在解决这个错误之前,需要先确认当前Azure PowerShell的版本。
可在控制台中查找相关信息或在PowerShell中执行
Get-Module -ListAvailable | Where-Object { $_.name -like "*Azure*" }
这边需要特别确认AzureRM.Profile的版本,我这边的版本是1.0.1。
首先,建议所有的用户升级到Azure PowerShell 1.0.2以上版本,主要是因为在此版本中提供了相关修正。使用0.9.x版本的用户,也建议进行升级,主要是因为有些新的服务在新的版本下才能使用。(如Redis Cache Premium)
最新的Azure PowerShell安装文件下载地址请到这里查找: https://github.com/Azure/azure-powershell/releases
在此,我假设Azure PowerShell都升级到1.0.2以上版本了。(无法升级的1.0.0及1.0.1用户作法可参考常见问题)
接着,在PowerShell中输入下列指令
Login-AzureRmAccount –EnvironmentName AzureChinaCloud
在Azure PowerShell 1.0.2之后,加入了-EnvironmentName参数,使用该参数就能成功验证中国Azure的账户信息。
接着,就能正常的操作AzureRm相关指令
常见问题
1. 如果我现在使用的版本是Azure PowerShell 1.0.0 / 1.0.1 ,该如何进行ARM的身份验证?
需要先定义在ARM下可用的环境变数
$ChinaRmEnv = Get-AzureRmEnvironment –Name AzureChinaCloud
接着将此变数应用在Login-AzureRmAccount上
Login-AzureRmAccount –Environment $ChinaRmEnv
2. 我该如何回复到之前的版本?
需要先移除目前安装的Azure PowerShell (控制台或是remove-module),然后到https://github.com/Azure/azure-powershell/releases下载你需要的版本。但由于未来Azure PowerShell的服务与更新,可能会造成使用旧版本的功能限制,还是建议用户升级到最新版本。
3. Azure资源管理器 (Azure Resource Manager) 和Azure服务管理器 (Azure Service Manager) 有何区别?
Azure服务管理器为Azure的服务管理系统,让用户能对服务进行相关操作如创建,删除,修改等。Azure资源管理器则为新一代的Azure管理系统,强化了针对资源组的管理及授权及资源建立的范本。此外,有些服务只建立在Azure资源管理器上(如Redis Cache)。