我有以下脚本:
$SqlServerCounterPrefix = '\MSSQL$MSSQL_2008'
$Data = get-counter ($SqlServerCounterPrefix + ":Buffer Manager\Buffer cache hit ratio"),
($SqlServerCounterPrefix + ":Buffer Manager\Page life expectancy"),
($SqlServerCounterPrefix + ":Access Methods\Page splits/sec")
#$Data
$TransformedData = $Data.CounterSamples | Select-Object -Property Path, CookedValue
$TransformedData | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $Data.Timestamp
$TransformedData | Format-table -auto
这导致以下结果:
Path CookedValue Timestamp
---- ----------- ---------
\\sw-pa-win10\mssql$mssql_2008:buffer manager\buffer cache hit ratio 100 2016-10-25 10:18:19
\\sw-pa-win10\mssql$mssql_2008:buffer manager\page life expectancy 123 2016-10-25 10:18:19
\\sw-pa-win10\mssql$mssql_2008:access methods\page splits/sec 0 2016-10-25 10:18:19
我如何将其转变为以下内容:
Timestamp buffer cache hit ratio page life expectancy page splits/sec
--------- ---------------------- -------------------- ---------------
2016-10-25 10:18:19 100 123 0
注意:我对powershell不好,所以如果您对改进原始脚本有任何建议,欢迎大家提出意见!
答案 0 :(得分:0)
我设法找到了解决方案:
$SqlServerCounterPrefix = '\MSSQL$MSSQL_2008'
$Data = get-counter ($SqlServerCounterPrefix + ":Buffer Manager\Buffer cache hit ratio"),
($SqlServerCounterPrefix + ":Buffer Manager\Page life expectancy"),
($SqlServerCounterPrefix + ":Access Methods\Page splits/sec")
$TransformedData = $Data.CounterSamples | Select-Object -Property Path, CookedValue
$object = New-Object psobject
$object | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $Data.Timestamp
foreach ($row in $TransformedData)
{
$path = $row.Path
$name = $path.Substring($path.LastIndexOf("\") + 1)
$object | Add-Member -NotePropertyName $name -NotePropertyValue $row.CookedValue
}
$object