powershell - PowerShell 中的捕获错误未按预期工作
问题描述
我正在使用对 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)"
}
}
}
解决方案
您已将+err
参数作为参数传递给ErrorVariable
,Measure-Object
但它可能Get-ChildItem
是引发错误的 cmdlet。
将其更改为:
$Foldersize = "{0:N2} MB" -f ((Get-ChildItem -LiteralPath $Folder -Force -Recurse -EV +err -EA Continue | Measure-Object -Property Length -Sum).Sum / 1MB)
推荐阅读
- angular - 如何测试 mat-tree 组件?
- azure - 从 .Net 应用程序访问 Azure Key Vault - 获取 DefaultAzureCredential 身份验证失败
- jmeter - jmeter - 基于数据库查询的循环
- laravel - 使用 elasticquent 映射得到 Root 映射定义有不支持的参数错误
- c# - 在 c# 中使用 Selenium 时避免加载图像和其他资源(如 css)
- xamarin.forms - 强制屏幕阅读器阅读标签
- python - 在 sympy 中解析字符串时识别子表达式
- reactjs - 来自 React 的 SignalR:'HubConnectionBuilder' 未定义 no-undef
- java - 在 docker 容器中使用 logstash 和 logback 进行日志记录
- java - Java - 在设置子字段之前在超级实例化期间调用抽象方法的问题