私は Powershell を初めて使用するので、問題が発生した場合に助けが必要です。ディレクトリに関する情報を含むオブジェクトを返す関数を作成しました。
日付: 2012 年 10 月 12 日
コンピューター: PC1
ディレクトリ: C:\TEMP
FOLDERSIZE_IN_MB: 70
ディレクトリをループしてサイズの情報を収集し、週に 1 回 CSV ファイルにエクスポートします。
ここで私の問題が始まります:
ディレクトリの成長に関する情報を取得したいと思います。最も古いCSVファイルと最新のCSVファイルをインポートするスクリプトを書き始めました。
$data="C:\LOG\Data"
$data= gci -path $data -filter "*.csv"
$temp=""
$old,$new=@()
foreach($item in $data){
If((Get-Date $item.LastWriteTime -format ("ddMMyyyy")) -gt $temp){
$new+= $item.FullName |Import-CSV -delimiter ";"
}
Elseif((Get-Date $item.LastWriteTime -format ("ddMMyyyy")) -lt $temp){
$old+= $item.FullName |Import-CSV -delimiter ";"
}
$temp=(Get-Date $item.LastWriteTime -format ("ddMMyyyy"))
}
2 つの配列を比較して、両方で等しいディレクトリ値を見つけ、それらのサイズで呼び出すにはどうすればよいですか?
チェック方法がわかりません:
OLD の C:\TEMP と NEW の C:\TEMP の場合、(1-(SIZEOLD/SITZENEW))*100 を呼び出します。
次のような出力が得られれば幸いです。
日付: 2012 年 10 月 12 日
コンピューター: PC1
ディレクトリ: C:\TEMP
FOLDERSIZE_IN_MB: 80,5
GROWTH_SINCE_LAST_SCAN: 15%
これは私が問題を解決するために行ったことですが、しっかりしているようには見えず、ハッシュをオブジェクトに変換して結果を csv にパイプする方法がわかりません。
$old=$old|グループ オブジェクト アイテム $new=$new|グループ オブジェクト アイテム
$result1=compare $new $old -property Name -includeequal -passthru |WHERE {$_.Sideindicator -eq "=="}
$result2=compare $old $new -property Name -includeequal -passthru |WHERE {$_.Sideindicator -eq "=="}
for($i=0;$i -le $result1.count;$i++){
if($result1[$i].Name -contains $result2[$i].Name){
$Size2=($result2[$i].Group)| select-object -property FolderSize_in_MB
$Size1=($result1[$i].Group)| select-object -property FolderSize_in_MB
if(([int]$Size1.FolderSize_in_MB) -ne "0"){
$growth=(1-(([int]$Size2.FolderSize_in_MB)/([int]$Size1.FolderSize_in_MB)))*100
}
else{
$growth="0"
}
}
else{
}
if($result1[$i]){
$result1[$i].Group| ADD-Member NoteProperty Growth ("{0:n2}"-f $growth +"%")
}
}