2016-07-01 3 views
1

CSV를 가져오고 Measure-Object을 사용하여 가져온 값을 호스트별로 그룹화 한 PowerShell 스크립트 섹션이 있습니다. 나는 현재 호스트에 관한 행의 수, 최소값, 최대 값 및 평균값을 얻고 있습니다. 코드 조각 아래 :공백 CSV 행 백분율 얻기

$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는 다음과 같이 보일 것입니다 :

"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" 

내가에 수학을 실행하고있어 값도 너무 $null이 될 수있다 [TEST1 같은 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

이 큰 일처럼 보일 수 있습니다! –