Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项

本文介绍Azure PowerShell 1.0.0版本的主要变化,包括Switch-AzureMode指令的移除及如何在新版中进行中国Azure账户的身份验证。同时提供了常见问题解答,帮助用户顺利过渡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着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 –EnvironmentName AzureChinaCloud


在Azure PowerShell 1.0.2之后,加入了-EnvironmentName参数,使用该参数就能成功验证中国Azure的账户信息。

接着,就能正常的操作AzureRm相关指令了


常见问题

1.  如果我现在使用的版本是AzurePowerShell 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资源管理器上(如Azure Stream Analytics, Redis Cache)。

转载自: http://blogs.msdn.com/b/cciccat/archive/2015/12/09/azure-powershell-1-0-0-azure.aspx 



<think>好的,我现在需要回答用户关于Azure Pipelines中如何正确引用变量语法的问题,用户问的是应该使用${var}还是$(var)。首先,我得回想一下Azure Pipelines的文档内容,或者根据之前的经验来确认正确的语法。 我记得在Azure Pipelines中,变量的引用通常使用$(variable_name)这种格式。比如在任务中设置参数时,会用$(变量名)来获取值。例如,定义一个变量名为BuildConfiguration,引用时就是$(BuildConfiguration)。而${var}这种格式可能是在其他脚本或编程语言中使用的,比如在shell脚本中会用${VAR},或者在PowerShell中会用$env:VAR。但在Azure Pipelines的YAML文件里,正确的语法应该是$(var)。 接下来,我需要验证这一点是否正确。可以想象,在YAML文件中定义变量时,无论是直接在文件中定义还是通过变量组,引用的时候都是使用$(var)。例如: variables: myVariable: 'value' steps: - script: echo $(myVariable) 这种情况下,输出会是'value'。如果用户使用了错误的语法比如${myVariable},可能会导致变量无法正确解析,输出为空或者原样输出字符串。 另外,Azure Pipelines还有一些预定义的变量,比如Build.BuildId,引用时也是$(Build.BuildId)。这进一步支持了使用$(var)的结论。 可能用户混淆了不同环境中的变量语法,比如在模板引擎或者某些任务内部(比如Bash任务)中,可能需要使用不同的语法,但在Azure Pipelines的YAML结构里,统一使用$(var)。 还需要考虑用户提到的场景,比如在条件表达式、任务输入、或者脚本中引用变量。比如: - 在条件中使用变量:condition: eq(variables['var'], 'value') - 在脚本中传递变量:- script: echo $(var) 这时候正确的语法都是使用$()。 最后,确保回答时提到正确的语法是$(var),并给出示例,同时指出${var}在其他地方可能适用,但在Azure Pipelines中不适用。可能还需要提醒用户注意变量作用域和大小写敏感性等问题。</think>在Azure Pipelines中,变量引用的正确语法是使用`$(var)`格式。例如,定义变量`buildVersion`后,在任务中通过`$(buildVersion)`调用其值。这种语法适用于YAML文件、任务参数以及脚本中的变量传递[^2]。 ### 示例 ```yaml variables: buildVersion: '1.0.0' steps: - script: echo "当前版本号为 $(buildVersion)" ``` ### 语法对比 | 格式 | 适用场景 | 示例 | |-------------|----------------------------|--------------------------| | `$(var)` | Azure Pipelines YAML/脚本 | `echo $(buildNumber)` | | `${var}` | Shell脚本、编程语言(如JS) | `echo ${BUILD_NUMBER}` | ### 注意事项 1. **变量作用域**:在不同阶段(如作业、步骤)定义的变量可能需要通过`variables`关键字显式传递。 2. **预定义变量**:Azure内置变量(如`$(Build.BuildId)`)也遵循此格式[^2]。 3. **大小写敏感**:变量名在Windows环境中不区分大小写,但在Linux/macOS中区分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值