我有一个脚本,其中包括:
try {
Compress-Archive -Path "$($folder.FullName)\*" -CompressionLevel Optimal -DestinationPath $FullPath -Force
} catch {
Write-Output "`nFailed to create zip"
}
-Path文件夹中的某些文件是由另一个用户打开的,因此Compress-Archive无法将它们添加到zip中。它会向stderr报告此失败,但是不会引发错误。
是否有任何方法可以确定该命令仅部分成功,而无需解析stderr或重新打开zip并比较内容?
答案 0 :(得分:0)
听起来Compress-Archive
抛出了一个非终止错误,您无法用try
/ catch
来捕获该错误。
但是,如果将-ErrorAction Stop
添加到Compress-Archive
调用中,则非终止错误将升级为脚本终止错误,而 < / em>触发您的catch
处理程序。
有关PowerShell的复杂错误处理规则的概述,请参见this GitHub issue。