Get-Childitem解决方法

时间:2012-10-29 11:58:19

标签: powershell path max robocopy get-childitem

我想确定哪些文件/文件类型占用了文件服务器上的大部分空间。由于很多用户创建了名称/路径长度超过260的文件,因此char gci不起作用。(快捷方式 - 快捷方式 - 无限快捷方式)

我的下一步是使用显示的内容创建一个变通方法,大小文件名和路径没有max_path var限制。(ROBOCOPY)

这是我的功能:

Function Get-RoboFileSize($source_name){

$filelog=robocopy.exe /e /l /njh /njs /ndl /fp /nc /bytes $source_name $env:Temp

foreach ($item in $filelog){

   if ($item -like "*$source_name*"){   

         $base=$item -Replace "[\s]",""
         $Filename=$base -Replace "^[0-9]{1,}",""
         $Filesize=$base -Replace "[^\d][a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\!\%\§öäüÖÄÜßáàðÞ]{1,}",""

         New-Object PSObject -Property @{
                                            Filename=$Filename
                                            FileSize= ("{0:#}" -f($Filesize/1MB))

         }              
    }

}

}

这种方法有效但我的问题是它消耗了大量资源。

是否有人知道如何改进此功能....也许是另一种解决方法的想法?

1 个答案:

答案 0 :(得分:3)

Microsoft了解path length limitations

有一篇文章在C#中提供了一种解决方法。如果你真的关心表现,这是你最好的选择:Long Paths in .NET, Part 1 of 3 [Kim Hamilton]

如果您想坚持使用Powershell,请参阅powershell.com forums上的其他解决方法。