C:Users配下の容量の多いフォルダを見つけるスクリプト

03.20

VDI環境などで良くある話ですが、ストレージ容量を小さく設定しているためローカルにはデータを置かないように運用している現場は多いかと思います。

しかし、どれだけ運用で回避しようとしてもユーザーはデータを置いてしまうので、容量が大きくなっているフォルダを探す必要がでてきます。

以下のスクリプトは、BOXDriveを使っている環境で使用しました。

BOXにデータを置くために使っているのですが、BOXのフォルダまで参照することでネットワーク越しのすべてのフォルダの容量を見てしまうと大変時間がかかるのでBOXフォルダ以外を参照するように工夫しております。

 

# アクセスできない場所はたくさんあるのであらかじめエラーは非表示に設定

$ErrorActionPreference = “silentlycontinue”

# ローカル系のアカウントはあらかじめ除外

$Username = Get-ChildItem C:\Users | ? { $_.PSIsContainer }

$TargetUser = @()

$Username | % {

if($_.name -ne “administrator”)

{

if($_.name -ne “localadmin”) # ここは環境によって削除してください。

{

if($_.name -ne “Public”)

{

$TargetUser += $_.name

}

}

}

}

# BOXドライブの中身を参照すると大変なことになるので、BOX以外のフォルダを抽出

$Folder = @()

$TargetUser | % {

$TargetFolder = $Path = $null

$Path = ‘C:\Users\’ + $_

$TargetFolder = Get-ChildItem $Path -force  | ? { $_.PSIsContainer }

$TargetFolder | % {

if($_.name -notlike “*BOX*”)

{

$Folder += $_.fullname

}

}

}

# 再帰的にフォルダの中身を取得して、全フォルダを取得。その後それぞれのフォルダのLength数の合計を取得。合計で1000MB以上あるフォルダをCSVに出力する。

$Folder | % {

$ChildFolder = $MB = $subFolderItems = $null

$ChildFolder = Get-ChildItem $_ -Recurse -force  | ? { $_.PSIsContainer }

$ChildFolder | % {

$subFolderItems = (Get-ChildItem $_.Fullname -Recurse -Force | Measure-Object -Property Length -Sum)

$MB = [decimal](“{0:N2}” -f ($subFolderItems.sum / 1MB))

if($MB -ge 1000)

{

$note = $null

$note = $_.Fullname + “`t” + $MB

$note | Out-file $env:UserProfile\Desktop\Excess_Folder.csv -append

}

}

}

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2019年12月
« 10月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
ページ上部へ戻る