我有一个Azure DevOps管道(经典)来构建我们的代码。在管道的末尾,我使用任务PowerShellV2
来执行powershell脚本。当执行该脚本时,有时会失败,并出现以下错误:
Compress-Archive : The term 'Compress-Archive' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:4 char:5
+ Compress-Archive -Path "$dirToZip\\*" -DestinationPath "$zipFileP …
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Compress-Archive:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
成功/失败比率约为25/1。该任务使用已安装的PowerShell版本C:\Program Files\PowerShell\7\pwsh.exe
。该版本至少为PowerShell v7.2.6*(取决于使用的生成服务器。失败和成功与生成服务器无关,因此它们在每个生成服务器上随机发生。)*
下面是脚本的失败部分:
# Zip form directories
Write-Host "`nZip form directories:"
Get-ChildItem -Directory $targetFormsDir | ForEach-Object -Parallel {
$dirToZip = $_.FullName
$zipFilePath = $dirToZip + ".zip"
Compress-Archive -Path "$dirToZip\\*" -DestinationPath "$zipFilePath" -CompressionLevel Optimal -Force
Write-Host "'$dirToZip' -> '$zipFilePath'"
}
我猜想,这与并行执行有关,但如果是这样,我想了解,为什么。
1条答案
按热度按时间jaxagkaj1#
正如@圣地亚哥Squarzon指出的,我必须摆脱
-Parallel
,没有它,我的命令会慢一点,这在我的情况下不是一个问题。欲了解更多详情,请阅读@圣地亚哥Squarzon评论。