1

ファイルサーバーで最も多くのスペースを消費するファイル/ファイルタイプを特定したいと考えています。多くのユーザーが名前/パスの長さが 260 文字を超えるファイルを作成したため、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))

         }              
    }

}

}

このアプローチは機能しますが、私の問題は、多くのリソースを消費することです。

誰かがこの機能を改善する方法を知っていますか....おそらく別の回避策のアイデアはありますか?

4

1 に答える 1

3

Microsoft は、パスの長さの制限について知っています。

C# での回避策を提供する記事があります。パフォーマンスを本当に気にするなら、これが最善の策です: .NET の長いパス、パート 1/3 [Kim Hamilton]

Powershell を使い続けたい場合は、powershell.com フォーラムで別の回避策を参照してください。

于 2012-10-29T15:53:26.453 に答える