特定のディレクトリ内のフォルダーのサイズ、名前、およびログが記録された日付を記録するスクリプトを開発したいと考えています。スクリプトを次の CSV 形式でエクスポートする必要があります。
Date;A;b;c;durga;New Folder;New Folder (2)
0125-1416;0.00;0.05;1;1; 0.00
0125-1417;0.00;0.05;0.00;0.00
0125-1419;0.00;0.05;0.00;0.00;20;30
最後に、このログ ファイルに基づいて、フォルダーが追加または削除されたことを判断できるほど、スクリプトをインテリジェントにする必要があります。したがって、ルート ディレクトリ C:\scripts に A、B、および C のフォルダーがある場合、次にスクリプトを実行するときに A を削除するか D を追加するかをスクリプトに認識させ、CSV ファイルでそれを説明する必要があります。
スクリプトは頻繁に (毎日?) 実行され、基本的に「log.txt」と呼ばれるサイズが増え続ける CSV ファイルに新しい行を追加します。
これまでのところ、フォルダーを再帰して個々のサイズを合計し、親フォルダーの名前、サイズ、日付を保存し、このすべての情報を新しいオブジェクトにくさびにして、配列インデックスに投げ込むコードがいくつかあります。同様にフォーマットされたオブジェクトを大量に取得して、目的の CSV 出力のように見せようとすると、道に迷ってしまいます。これからCSVファイルを取得するためのより良いアプローチが必要です!!
これが私の「特定のディレクトリ内のフォルダーのサイズを取得する」コードのビットです:
cd C:\scripts
$a = @()
get-childitem | where {$_.PSIsContainer} | foreach {
$size = (Get-ChildItem $_ -recurse | where {!$_.PSIsContainer} | Measure-Object -Sum Length).Sum
$date = Get-Date -UFormat %Y%m%d-%H%M
$size1 = "{0:n2}" -f ($size / 1MB)
$obj = new-object psobject
add-member -inp $obj noteproperty date $date
add-member -inp $obj noteproperty path $_.Name
add-member -inp $obj noteproperty size $size1
$a += $obj
}
私はPowershellを初めて使用するので、ここでつまずきます。フォルダーのサイズがあります。オブジェクトを$ aで抽出する方法がわかりません。それらをすべてきれいにフォーマットします(私が投稿したCSVの例のように私の投稿の冒頭に向かって)、em を CSV として保存し、次回スクリプトを実行するときに CSV を読み取れるようにスクリプトをインテリジェントにし、CSV ファイルの次の行を記録するときに変更を考慮します。
これを行うより良い方法はありますか?1年ぶりの投稿なのでお手柔らかにお願いします…笑。
ありがとうございました!