Azure DevOps中AzurePowerShell@4与AzurePowerShell@5任务有什么区别?
AzurePowerShell@4 与 AzurePowerShell@5 核心差异说明
1. 运行时支持差异
- @4 版本默认绑定 Windows PowerShell 5.1 运行时,仅能在Windows代理环境下原生运行,如需在Linux/macOS代理上执行,需要额外配置PowerShell Core兼容规则,适配成本较高
- @5 版本原生支持PowerShell 7+(跨平台PowerShell Core),同时兼容Windows PowerShell 5.1,可在Windows、Linux、macOS代理环境下直接运行,无需额外做跨平台适配
2. Azure 能力支持差异
- @4 内置适配的Az(Azure PowerShell)模块最高仅支持到6.x版本,后续新增的Azure资源操作能力(如新版Entra ID接口、部分云服务的新属性操作)无法直接使用,需要手动在流水线中安装更高版本Az模块,会增加任务运行耗时
- @5 原生支持Az 7.x及以上版本的全部能力,默认会自动匹配代理环境的最新稳定版Az模块,无需额外手动安装升级即可调用所有最新Azure操作接口
3. 安全与功能特性差异
- @5 新增
*azurePowerShellAccessToken*参数,支持传入自定义Azure AD访问令牌完成身份认证,无需完全依赖ADO服务连接的固定权限,更适配企业复杂权限管控场景 - @5 修复了@4中存在的多个安全漏洞,包括脚本执行日志泄露敏感变量、服务连接凭据缓存超时异常等问题
- @5 新增脚本执行沙箱隔离能力,避免当前任务的PowerShell脚本篡改代理环境全局配置,影响其他流水线任务运行
4. 迁移兼容说明
绝大多数@4的YAML配置可直接无缝迁移到@5,仅需要将任务标识从AzurePowerShell@4修改为AzurePowerShell@5即可,无需调整其他参数。如果你的脚本依赖PowerShell 5.1专属特性,仅需要在@5的参数中添加pwsh: false指定使用Windows PowerShell运行时即可正常运行。
如果你的流水线仅在Windows代理上运行,且没有用到新版Azure资源操作的需求,暂时不升级也不会影响现有功能,但微软已经停止对@4版本的功能更新,后续也不会再修复新发现的安全漏洞,建议尽快完成版本升级。
内容的提问来源于stack exchange,提问作者MoonHorse
相关产品推荐
相关产品推荐

