Azure DevOps经典流水线导入证书至Key Vault遇命令未找到错误
Azure DevOps经典流水线导入证书到Key Vault报错解决
问题场景
在Azure DevOps经典流水线中,已将.cert证书上传为安全文件,添加了两个任务:
- 下载安全文件任务
- Azure Cli任务,内联脚本如下:
$certFilePath = $(Agent.TempDirectory)\mycert.com.crt az keyvault certificate import --vault-name "keyvaultname" -n "mycert.com.crt" -f $certFilePath
报错信息
D:\agent_work_temp\mycert.com.crt : 术语“D:\agent_work_temp\mycert.com.crt”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称拼写,或验证路径是否正确后重试。
在 D:\agent_work_temp\azureclitaskscript1675572660483_inlinescript.ps1:1 字符:12
- $inFile = D:\agent_work_temp\mycert.com.crt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : ObjectNotFound: (D:\agent_work_temp\mycert.com.crt:String) [], ParentContainsErrorRecordException
- FullyQualifiedErrorId : CommandNotFoundException
解决方法
1. 修正PowerShell变量赋值语法
PowerShell中直接写路径会被当作命令执行,需将路径字符串用引号包裹,或者用更规范的路径拼接方式:
# 方法1:用双引号包裹路径字符串 $certFilePath = "$(Agent.TempDirectory)\mycert.com.crt" # 方法2:使用Join-Path拼接路径(推荐,避免路径分隔符问题) $certFilePath = Join-Path -Path $(Agent.TempDirectory) -ChildPath "mycert.com.crt" # 执行导入命令 az keyvault certificate import --vault-name "keyvaultname" -n "mycert.com.crt" -f $certFilePath
2. 确认下载安全文件任务配置
- 检查下载任务的文件名设置,确保保存的文件名是
mycert.com.crt,和脚本中的文件名一致 - 确认下载任务的目标文件夹为
$(Agent.TempDirectory),若自定义了目标路径,需同步修改脚本中的路径
内容的提问来源于stack exchange,提问作者ezycoder
相关产品推荐
相关产品推荐

