powershell 有时找不到PS-Cmdlet“压缩存档”

blmhpbnm  于 2022-12-04  发布在  Shell
关注(0)|答案(1)|浏览(119)

我有一个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'"
}

我猜想,这与并行执行有关,但如果是这样,我想了解,为什么。

jaxagkaj

jaxagkaj1#

正如@圣地亚哥Squarzon指出的,我必须摆脱-Parallel,没有它,我的命令会慢一点,这在我的情况下不是一个问题。
欲了解更多详情,请阅读@圣地亚哥Squarzon评论。

相关问题