在大型目录结构上运行时元数据导出错误
问题描述:
此脚本将PowerShell中的基本文件元数据导出到.csv。在大型目录结构上运行时元数据导出错误
PS K:\> Get-childitem -recurse -file | select-object length,lastwritetime,fullname | export-csv filelist.csv -notypeinformation
这对10-20K简单的文件目录结构的伟大工程,但是当我在复杂的,多级目录结构的500K +文件运行它,它冻结或给了我错误:
At line:1 char:1
+ Get-childitem -recurse -file | select-object length,lastwritetime,ful ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : CallDepthOverflow
这是-recurse
还是其他问题?使用PowerShell 5 1(主要次要)。
答
测试以查看文件路径有多长。
如果文件路径超过248个字符...这可能是您收到错误的原因。
要检查,看是否有带回来超过248个字符,你可以做
Get-childitem "filepath" -recurse | % {
$filepath = $_.FullName
$charactercount = ($filepath | Measure-Object -Character).Characters
If ($charactercount -gt 248){write-host $filepath}
}
'CMD/C DIR/S/B |? {$ _。length -gt 248}'是检查的好方法吗? – user3026965
即时通讯不是命令行方面的专家,但我用您可以使用的powershell代码修改了我的答案。 – ShanayL
尝试了1.5 TB,400K各种文件。它给出了一个带有50K行的.csv输出(用Notepad ++打开),但仍然在下面显示一条错误消息。没有路径名称超过246. '由于调用深度溢出,脚本失败。 在线:1 char:1 + Get-childitem -recurse -file | select-object length,lastwritetime,ful ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分类信息:InvalidOperation:(0:Int32)[],RuntimeException + FullyQualifiedErrorId :CallDepthOverflow' – user3026965