问题描述
最近一周,我们的管道在 “IIS Web App Deployment” 步骤中开始使用 Expand-Archive
命令来打开 .zip
文件,而不是使用 7-Zip。看起来这不是由我们的团队所做的更改,所以我猜测这可能是在 DevOps 中做的更改。
我们正在部署到 Server 2012R2。
我们的几个应用程序可以正常工作,但是其中一个应用在展开时失败。根据情况来看,可能与路径长度有关(这个应用在 Angular 中使用了非常深的文件夹嵌套),因为如果我缩短目标路径,我可以手动成功运行命令。
在服务器上失败的命令是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\temp_web_package_8157628602055582" -Force"
如果我将其缩短为:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\short" -Force"
……它似乎可以正常工作。
显然,我在猜测它是否是路径长度问题,但证据似乎支持这一点。此外,我重建了本来可能是 7-Zip 命令,它也按预期工作:
C:\azagent\A3\_work\_tasks\IISWebAppDeploymentOnMachineGroup_1b467810-6725-4b6d-accd-886174c09bba\0.184.0\node_modules\webdeployment-common-v2\7zip\7z.exe x -oC:\azagent\A3\_work\_temp\temp_web_package_8157628602055582 C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip
我查看了这里的建议,发现我们已经在使用以下设置:
https://igorpuhalo.wordpress.com/2019/08/29/overcoming-long-path-problem-in-powershell/
我希望有人知道可能发生了什么变化,可以建议一个直接的方法来回到使用 7-Zip,或者有办法使 Expand-Archive
正常工作。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1:升级 PowerShell 版本
根据用户回复,通过升级到 PowerShell 7 并添加环境信息,问题得以解决。同时,你可能需要在目标服务器上重新注册 Azure 代理。
以下是升级 PowerShell 的步骤:
1. 访问 PowerShell GitHub 页面 并下载最新版本的 PowerShell。
2. 安装新版本的 PowerShell。
3. 在你的脚本中更新命令,确保使用了 PowerShell 7 的路径。
方案2:继续使用 7-Zip
如果希望继续使用 7-Zip 来解压缩文件,可以按照以下步骤重新构建命令:
1. 使用 7-Zip 命令行工具(7z.exe)解压缩你的文件。确保已经将 7-Zip 添加到系统路径中,以便在命令行中直接调用。
2. 构建一个类似于以下命令的命令来解压缩文件:
C:\azagent\A3\_work\_tasks\IISWebAppDeploymentOnMachineGroup_1b467810-6725-4b6d-accd-886174c09bba\0.184.0\node_modules\webdeployment-common-v2\7zip\7z.exe x -oC:\azagent\A3\_work\_temp\temp_web_package_8157628602055582 C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip
确保根据你的实际路径和文件名进行调整。
选择适合你情况的解决方案,以解决使用 Expand-Archive
命令时的问题。
【参考链接】:
– StackOverflow 答案
– PowerShell GitHub 页面
– 7-Zip 官网
– 升级 Azure 代理
以上是解决问题的两种方案,希望能帮助你解决使用 Expand-Archive
命令时遇到的问题。