在大型目录结构上运行时元数据导出错误

问题描述:

此脚本将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} 
} 
+0

'CMD/C DIR/S/B |? {$ _。length -gt 248}'是检查的好方法吗? – user3026965

+0

即时通讯不是命令行方面的专家,但我用您可以使用的powershell代码修改了我的答案。 – ShanayL

+0

尝试了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