2016-08-24 2 views
1

У меня есть следующий бит кода, который я заимствовал, но я не получаю ожидаемый результат. В конце концов я хочу создать список/массив для каждого счетчика, содержащего последнее число x значений. Но я ожидал, что $obj будет списком счетчиков, которые я мог бы выполнить, и код ниже дал бы результат, который бы имел *** между каждым собранным счетчиком, но это не так?Выходные значения из нескольких счетчиков в Powershell

Как я могу зацикливать каждый счетчик в свою очередь и получить его значение?

$counters = get-counter -ComputerName sql -Counter "\SQLServer:General Statistics\User Connections","\SQLServer:Memory Manager\Memory Grants Pending","\SQLServer:SQL Statistics\batch requests/sec","\SQLServer:SQL Statistics\sql compilations/sec","\SQLServer:SQL Statistics\sql re-compilations/sec" -SampleInterval 1 

foreach($metric in $counters)    
{    
    $obj = $metric.CounterSamples | Select-Object -Property Path, CookedValue;    

    write-host $obj 
    write-host "***" 
} 

Ток на выходе я получаю ниже:

@{Path=\\sql\\sqlserver:general statistics\user connections; CookedValue=96} @{Path=\\sql\\sqlserver:memory manager\memory grants pending; CookedValue=0} @{Path=\\sql\\sqlserver:sql statistics\batch requests/sec; CookedValue=110.969626692457} @{Path=\\sql\\sqlserver:sql statistics\sql compilations/sec; CookedValue=17.9950745987768} @{Path=\\sql\\sqlserver:sql statistics\sql re-compilations/sec; CookedValue=5.99835819959228} 
*** 

Я надеялся больше, как это:

Counters 1 = 0.5 
*** 
Counter 2 = 1.2 
*** 

Это нарушило бы вывод в отдельные счетчики, но я думаю, Теперь я понимаю комментарии.

+0

Будьте конкретны при задании вопросов (например, $ obj - это список CounterSamples для одной итерации счетчиков $, предположительно $ counters - ваш список счетчиков). Вы также не объясняете, какой результат вы получите. Похоже, он должен выводить кучу статистики на консоль (но не в любом списке, с которым вы можете что-либо сделать). –

+0

вы можете взглянуть на помощь для get-counter, start-job, get-gob и т. Д. –

+0

Спасибо Deadly-Bagel, я не смотрел на это правильно, мне нужно было зацикливаться, хотя элементы в $ obj not $ Прилавки. Спасибо, и если вы хотите опубликовать его в качестве ответа, я принимаю его. – DevilWAH

ответ

0

Это то, что вы ищете?

$counters = $(Get-Counter -Counter '\Processor(_Total)\% Processor Time', '\LogicalDisk(_Total)\% Free Space').CounterSamples | Select-Object -Property Path, CookedValue 

foreach($obj in $counters)    
{    
    Write-Host -Object '***' 
    $obj = $($obj | ConvertTo-Json| 
     ForEach-Object -Process { 
     [System.Text.RegularExpressions.Regex]::Unescape($_) 
     }) -replace ‘[{},\n]’ 
    Write-Host -Object $obj 
    Write-Host -Object '***' 
} 
+0

Как и выше, проблема заключалась в том, как я смотрел на возвращаемую переменную, и у Deadly_Bagel был ответ. ура – DevilWAH

Смежные вопросы