2017-11-20 11 views
0

nサイズより大きなディレクトリを検索するために特定のパスを繰り返し処理できるPowerShellコマンドはありますか? ファイルがでnサイズより大きいことがわかりますが、ディレクトリのサイズを確認する必要があります。フォルダ内に1000個のファイルがあり、それぞれが1   MBであるため、ディレクトリの合計1   GBです。 これはC:\ windowsの下で起こっていました。ディレクトリサイズがnより大きい場合

答えて

1

PowerShellコマンドレットは、ディレクトリ内のネストされたアイテムのサイズを蓄積しないが、あなたは、このためにFileSystemObject COMオブジェクトを使用することができます。

$threshold = 1GB 

$fso = New-Object -COM 'Scripting.FileSystemObject' 

Get-ChildItem 'C:\root\folder' -Recurse -Directory | Where-Object { 
    $fso.GetFolder($_.FullName).Size -gt $threshold 
} 

-DirectoryパラメータはPowerShellのV3で導入されました。これをPowerShell v2で動作させるには、Where-Objectフィルタを持つディレクトリを選択する必要があります。

Get-ChildItem 'C:\root\folder' -Recurse | Where-Object { 
    $_.PSIsContainer -and 
    $fso.GetFolder($_.FullName).Size -gt $threshold 
} 
+0

ありがとうございますが、少し奇妙です。それが何の単位を使用しているのか教えてください。私はそれをテストしたので...そして、$ threshold = 10000000のために、それは合計25 MBのディレクトリでさえも私に示します。 – catalin

+0

単位はバイトなので、10,000,000バイトはわずか10MBなので、結果はむしろ驚異的です。したがって、25MB未満です。 'Size'プロパティは、フォルダのプロパティダイアログを開いたときにカッコで表示されるのと同じ値を表示します。 PowerShellの[バイト変換定数](https://technet.microsoft.com/en-us/library/ee692684.aspx)を使用すると、しきい値をよりわかりやすくすることができます(例: '$ threshold = 1GB')。 –

+0

これはpowershell 3以上でのみ動作します。 2のように見えますが、それは-Directory引数を含むことはできません。 PowerShell v2で作業するためにいくつかの変更を加えることは可能ですか?ありがとう! – catalin

関連する問題