Managed to do it with a conversion function... very useful :smileyhappy:
function ConvertTo-Object($hashtable)
{
$object = New-Object PSObject
$hashtable.GetEnumerator() |
ForEach-Object { Add-Member -inputObject $object `
-memberType NoteProperty -name $_.Name -value $_.Value }
$object | Export-Csv VMstat.csv
}
#$hash = @{Entity=$rEntity; TimeStamp=$rTimestamp; IntervalSecs=$IntervalSecs; ReadValue=$rValue; WriteValue=$wValue}
#$hash
#ConvertTo-Object $hash
################################
$format = "-Property Entity, TimeStamp, IntervalSecs, ReadValue, WriteValue"
$Read = "disk.numberread.summation"
$Write = "disk.numberwrite.summation"
#$IntervalSecs = 20
#$MaxSamples = 1
#$arrVM = Get-VM | where-object {$_.PowerState -eq "PoweredOn"}
$arrVM = Get-VM | where-object {$_.Name -eq "ServerA"}
foreach ($objVM in $arrVM)
{
$VMReadValue = Get-Stat -Entity $objVM -Realtime -Stat $Read -MaxSamples 1 -IntervalSecs 20
$VMWriteValue = Get-Stat -Entity $objVM -Realtime -Stat $Write -MaxSamples 1 -IntervalSecs 20
$rEntity = $VMReadValue.Entity.Name
$rMetricId = $VMReadValue.MetricId
$rTimestamp = $VMReadValue.Timestamp
$IntervalSecs = $VMReadValue.IntervalSecs
$rUnit = $VMReadValue.Unit
$rValue = $VMReadValue.Value
$wValue = $VMWriteValue.Value
$VMStats =@{"Entity" = $rEntity; "TimeStamp" = $rTimestamp; "IntervalSecs" = $IntervalSecs; "ReadValue" = $rValue; "WriteValue" = $wValue}
#$VMStats.getEnumerator() | Select Name, Value | Export-Csv VMstat.csv
$VMStats
ConvertTo-Object $VMStats
}