2012-10-29 25 views
1

我想確定哪些文件/文件類型佔用文件服務器上的大部分空間。由於很多用戶創建的文件的名稱/路徑長度超過260字符gci不起作用。(快捷鍵在快捷方式中的快捷方式無窮大)Get-Childitem解決方法

我的下一步是創建一個解決方法。使用的東西顯示,大小的文件名和路徑,而不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][[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\!\%\§öäüÖÄÜßáàðÞ]{1,}","" 

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

     }    
    } 

} 

}

這種方法的作品,但我的問題是,它消耗了很多的資源。

有人有一個想法如何改善此功能....也許是另一種解決方法的想法?

+1

您是否運行Windows 2008R2?如果是,請嘗試文件服務資源管理器的報告。 – vonPryz

+0

它想與不同的服務器(2003,2003 R2,2008,2008 R2)在多個服務器上進行評估,並安排一個腳本發送,並從每個服務器發送100個最大的摘要。 – PointerNullException

回答

3

Microsoft知道約path length limitations

有一篇文章提供了C#中的解決方法。如果你真的關心性能,這是你最好的選擇:Long Paths in .NET, Part 1 of 3 [Kim Hamilton]

如果你想堅持使用Powershell,請參閱powershell.com forums上的另一個解決方法。

+0

感謝您的提示。我會測試它。這裏是我閱讀的文章,以瞭解我使用robocopy的方法。 http://social.technet.microsoft.com/wiki/contents/articles/12179.net-powershell-path-too-long-exception-and-a-net-powershell-robocopy-clone-en-us.aspx – PointerNullException