我尝试Get-ChildItem -Recurse
对文件共享运行,但出现了一些“路径太长”的错误。但当我深入研究后,发现有些错误并非如此。
我使用 来-ErrorVariable
将错误详细信息捕获到名为 的变量中$ErrLog
。然后,执行以下操作将它们记录到 CSV 中:
if ($ErrLog.Length -ne 0)
{
$ErrLog | ForEach-Object {
# Gather details of interest.
$ErrTarget = $_.TargetObject
$ErrReason = $_.CategoryInfo.Reason
# Write data to custom PowerShell object.
$ErrObject = New-Object PSObject
$ErrObject | Add-Member -MemberType NoteProperty -Name 'Target Path' -Value $ErrTarget
$ErrObject | Add-Member -MemberType NoteProperty -Name 'Error Reason' -Value $ErrReason
# Add error to log variable.
$ErrList += $ErrObject
}
}
# Announce number of errors, and write to log as needed.
if ($ErrList.Length -eq 0)
{
Write-Output "No errors encountered.`n"
}
else
{
$ErrList | Export-CSV $LogErrors -NoTypeInformation
$ErrorsCount = $ErrList.Length
Write-Output "Logged $ErrorsCount errors.`n"
}
上面的代码似乎运行良好,但是我从中获取的数据与错误详细信息并不完全相符。
控制台上的错误详细信息表明文件名必须少于 260 个字符,目录名必须少于 248 个字符。这很有道理。但是,记录的所有路径都是目录,其中一些甚至少于 200 个字符!
我日志中最长的是 259 个字符。这个以及其他超过 248 个字符的日志都是合理的。最短的是 186 个字符,还有很多短于 248 个字符的日志。
为什么我在目录上收到这些“路径太长”错误,而实际上这些目录并不长?错误数据是否应该告诉我一些我没在日志中记录的内容?