次の関数を使用して、2 つの CSV の内容 (「セル」) を比較し、最大値の出力を取得できます。
Compare-Object $oldfile $latestfile -Property "UsedSize" -PassThru | select-Object "VolumeName", "UsedSize" | export-csv c:\kits\_write\snapshots\voldelta.csv -NoTypeInfo
ただし、セル内の値の間のデルタ/差を取得したいと考えています。
2 つの CSV の値の違いを見つけるために算術を実行することは可能ですか?
コンテキストを提供するために、NetApp ボリューム スナップショットのスケジュールを、たとえば 6 時間から 15 分に増やしています。変更を実装する前に、ボリューム上のすべてのデータ (もちろんスナップショットを含む) の推定成長率を調べるためN
に、時々デルタの収集を開始したいと思います。N+15 minutes
はい、snap delta
既存のスナップショットに対してこれを生成するための Data ONTAP メソッドです。
ありがとう
【コメントに関して追記】
ファイル A:
VolumeName,TotalSize,AvailableSize,UsedSize
netapp_vol1,375809648400,101430421264,274379237136
ファイル B:
VolumeName,TotalSize,AvailableSize,UsedSize
netapp_vol1,375809638400,101430456320,274379182080
次のようなものを使用して「リード」を見つけました。
$combocsv = $oldfile + $latestfile
$combocsv | group VolumeName | select name,@{Name="Totals";Expression={($_.group | Measure-Object -sum UsedSize).sum}}
measure-object
合計ではなく差を実行する必要があることを除いて。その方法を見つけるのに苦労しています。
以下の選択した回答に従って解決しました。
$oldfilecsv = @{}
$oldfile = import-csv "C:\kits\_write\snapshots\filera_version.csv" | foreach-object { $oldfilecsv[$_.VolumeName] = [long]$_.UsedSize }
$latestfilecsv = @{}
$latestfile = import-csv "C:\kits\_write\snapshots\filera_latest.csv" | foreach-object { $latestfilecsv[$_.VolumeName] = [long]$_.UsedSize }
$deltas = @{}
foreach ( $volume in $latestfilecsv.keys ) {
$delta = $latestfilecsv[$volume] - $oldfilecsv[$volume]
$deltas.add($volume, $delta)
}