PowerShell中的陷阱错误无法按预期工作

时间:2018-12-13 13:36:29

标签: powershell error-handling

我正在对Get-Children进行递归调用,以获取文件夹/目录结构的总大小。它可以正常工作,但不能将错误保留在我使用的ErrorVariable中,并且从文档中看,它应该吗?有什么想法吗?

        [string]$fsoobjexist = Test-Path -Path $Folder
        $err=@() 
        If ($fsoobjexist -eq "True"){
            $err.clear
            if ((Get-Item $Folder) -is [System.IO.DirectoryInfo]){
                $Foldersize = "{0:N2} MB" -f ((Get-ChildItem -LiteralPath $Folder -Force -Recurse | Measure-Object -Property Length -Sum -EV +err -EA Continue  ).Sum / 1MB) 
                $logline = "$Folder,$Foldersize" 
                LogWrite $logline       

                Foreach ($Errors in $err){
                    ErrLogWrite "$($Errors.CategoryInfo.Category) $($Errors.CategoryInfo.Activity) $($Errors.CategoryInfo.Reason) $($Errors.CategoryInfo.TargetName) $($Errors.CategoryInfo.TargetType) $($Errors.Exception.Message)" 
                }
            }
        }

1 个答案:

答案 0 :(得分:2)

您已将+err作为ErrorVariable的{​​{1}}参数的参数传递,但是很有可能Measure-Object cmdlet引发了错误。

将其更改为:

Get-ChildItem