2016-07-01 6 views
1

CSVをインポートし、Measure-Objectを使用して、インポートされた値をホスト別にグループ化したPowerShellスクリプトのセクションがあります。私は現在、ホストに関する行数、最小値、最大値、平均値を取得しています。スニペットの下:空白のCSV行の割合を取得

"Hostname","Latency","DateTime" 
"test1","22","2016-07-01 14:13:50" 
"test2","28","2016-07-01 14:13:54" 
"test1","","2016-07-01 14:14:02" 
"test2","27","2016-07-01 14:14:06" 

私もそう[test1のようにCSVに存在しない、$null可能で数学を実行している値:

$data = Import-CSV -Path $SummaryTemp 
$collection = @() 
$data | Group-Object Hostname | ForEach-Object { 
    $datarow = New-Object PSObject -Property @{ Hostname = $_.Name } 
    $stat = $_.Group | Measure-Object -Property Latency -Minimum -Average -Maximum 

    $datarow | Add-Member NoteProperty -Name "Count" -Value $stat.Count 
    $datarow | Add-Member NoteProperty -Name "Minimum" -Value $stat.Minimum 
    $datarow | Add-Member NoteProperty -Name "Average" -Value $stat.Average 
    $datarow | Add-Member NoteProperty -Name "Maximum" -Value $stat.Maximum 

    $collection += $datarow 
} 
$collection | Export-Csv -Path $StatsCSV -Append -NoTypeInformation -Force 

インポートCSVは、次のようになります]上記。私が持っている問題は、空白の行の割合も計算したいということです。たとえば、上記のCSVは、test1では50%、test2では0%になります。どうすればこのことができますか?

答えて

1

一つの可能​​な解決策は、おかげで、これは

... 
$data | Group-Object Hostname | ForEach-Object { 
    $datarow = New-Object PSObject -Property @{ Hostname = $_.Name } 
    $stat = $_.Group | Measure-Object -Property Latency -Minimum -Average -Maximum 
    $emptyStat = $_.Group | ? { $_.Latency.Trim().Length -eq 0 } | Measure-Object 
    $emptyLinePct = "{0}%" -f ($emptyStat.Count * 100/$stat.Count) 

    $datarow | Add-Member NoteProperty -Name "Count" -Value $stat.Count 
    $datarow | Add-Member NoteProperty -Name "Minimum" -Value $stat.Minimum 
    $datarow | Add-Member NoteProperty -Name "Average" -Value $stat.Average 
    $datarow | Add-Member NoteProperty -Name "Maximum" -Value $stat.Maximum 
    $dataRow | Add-Member NoteProperty -Name "Empty" -Value $emptyLinePct 

    $collection += $datarow 
} 
... 
+0

これは素晴らしい仕事のようになります! –

関連する問題