随着Azure PowerShell 1.0.0+的推出,越来越多的客户开始使用新的版本的Azure PowerShell。此版本的PowerShell最大的改变在于将原先的 Switch-AzureMode 的指令移除,将原本在其下的指令改以加上Rm的方式存在,如 Get-AzureResource 改为 Get-AzureRmResource 。如此一来,在使用之前就不需要先做AzureMode的切换。因此,PowerShell1.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版本的用户,也建议进行升级,主要是因为有些新的服务在新的版本下才能使用。 (如RedisCache Premium)
最新的Azure PowerShell安装文件下载地址请到这里查找: https://github.com/Azure/azure-powershell/releases
在此,我假设Azure PowerShell都升级到1.0.2以上版本了。(无法升级的1.0.0及1.0.1用户作法可参考常见问题)
接着,在PowerShell中输入下列指令
Login-AzureRmAccount –EnvironmetName AzureChinaCloud
在Azure PowerShell 1.0.2之后,加入了-EnvironmentName参数,使用该参数就能成功验证中国Azure的账户信息。
接着,就能正常的操作AzureRm相关指令了
常见问题
需要先定义在ARM下可用的环境变数
$ChinaRmEnv =Get-AzureRmEnvironment –Name AzureChinaCloud
接着将此变数应用在Login-AzureRmAccount上
Login-AzureRmAccount –Environment$ChinaRmEnv
需要先移除目前安装的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资源管理器上(如Azure Stream Analytics, Redis Cache)。
本文转载自: http://blogs.msdn.com/b/cciccat/archive/2015/12/09/azure-powershell-1-0-0-azure.aspx