2016-10-25 72 views
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") 
#$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

我設法找到一個解決方案:

$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