Azure Pipeline Extract Task调用7zip失败找不到7z.exe如何解决
问题
使用默认配置的Extract Files任务无法将zip压缩包解压至目标路径,任务执行失败并抛出如下错误:
##[error]Unable to locate executable file: 'C:\azagent\A5\_work\_tasks\ExtractFiles_5e1e3830-fbfb-11e5-aab1-090c92bc4988\1.200.0\7zip\7z.exe'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.
报错提示无法定位默认的7zip路径,尝试配置自定义PATH路径后,仍然触发相同报错。
问题更新
经初步排查,该问题疑似由代理权限导致:无法在服务模式下以管理员权限执行Release,当以管理员身份在交互模式下运行代理时,Release可正常执行;只要操作需要管理员权限,该Extract Task就会执行失败。
解决方案
按优先级排序可依次尝试以下方案:
- 调整代理服务运行账户
执行services.msc命令唤起Windows服务管理器,找到对应Azure Pipelines Agent的服务项,右键进入「属性-登录」配置页,将默认的本地系统运行账户替换为本地管理员组内的有效账户,填入对应账户密码后保存配置,重启代理服务后重新触发流水线即可。该方案为根因解决方案,服务模式下的代理进程会直接继承所配置账户的管理员权限,不会再出现权限不足导致的组件路径识别失败问题。 - 修复任务缓存目录权限
定位到报错提示的ExtractFiles任务缓存路径:C:\azagent\A5\_work\_tasks\ExtractFiles_5e1e3830-fbfb-11e5-aab1-090c92bc4988\,右键进入「属性-安全-高级」配置页,勾选「替换所有子对象权限项的可继承权限项」,给代理服务运行账户添加该目录的完全控制权限,应用权限后删除该任务目录下的旧版本缓存,重新触发流水线即可。 - 临时规避方案
若暂时无法调整服务权限配置,可弃用内置Extract Files任务,直接添加PowerShell任务调用系统自带解压能力绕开自带7z组件的权限问题,执行命令参考:
注意需要在PowerShell任务配置中勾选「以管理员身份运行」选项。Expand-Archive -Path "<待解压zip包全路径>" -DestinationPath "<解压目标路径>" -Force
内容的提问来源于stack exchange,提问作者esanfio
相关产品推荐
相关产品推荐

