2014-02-14 1 views
0

Привет Я работаю над сценарием, чтобы брать образцы процессора в течение определенного периода времени. Сейчас я использую всего 5 секунд, чтобы быстро запустить его для тестирования ... Я не хочу знакомый с powershell, но нашел несколько вещей между этим сайтом и другими, чтобы придумать это, что работает на моей машине с Windows 7, но не на Windows 2008 R2, как только я получу среднее значение, я поместил его в оператор if для отправки предупреждение, если процессор становится увязшим. Я был бы признателен за любую помощь в этом вопросе, и благодаря загодя ....using powershell для анализа процессора

$a=Get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 

($a.CounterSamples.CookedValue | Measure-Object -Average).average 
+2

В чем ваш вопрос? Что касается того, почему он может работать на одной машине, но не на другой, см. Мой [ответ] (http://stackoverflow.com/a/21610671/517852) на этот [вопрос] (http://stackoverflow.com/questions/21610115/код-работа-на-Powershell-версию-3-но-не-на-PowerShell-2/21610671 # 21610671). –

+0

Я понимаю, что ваш код работает на Seven, но не на W2K8R2. Согласно @mike z comment, какова версия PowerShell, которую вы используете на каждом macine? – JPBlanc

+0

да полностью забыл о разных версиях, я предположил, что они оба одинаковы, код из нижеприведенного ответа работает, и это то, что я был после, но хорошо знаю о разных версиях между двумя системами, спасибо за вашу помощь ... – George

ответ

0
$b = Get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5|select -expandProperty countersamples|select -ExpandProperty cookedvalue|Out-String 

$($b[0]+$b[1]+$b[2]+$b[3]+$b[4])/5 

Это должно работать на V2.

+0

Я забыл о разных версиях и да, этот код действительно работает, спасибо вам большое ... – George

+0

Для тех, кто использует этот подход, просто хотел добавить к этому, что процессор может вернуть 0 значений, которые получают некоторые странные результаты, когда деление вступает в игру, по какой-то причине я получал два значения при делении и иногда получал ошибку относительно деления 0, чтобы подсчитать массив и проверить, чтобы значение было выше 0, прежде чем делить – George

+0

Хорошо, поэтому это не из-за нуля, Я столкнулся с образцами, но когда я добавляю их вместе вместо одного числа, я получаю массив из трех чисел, таких как: $ b = Get-counter -Counter "\ Processor (_Total) \% Время процессора" -SampleInterval 2 -MaxSamples 60 | select -expandProperty countersamples | select -ExpandProperty cookedvalue | Out-String $ a = ($ b [0 ] + $ B [1] + $ B [2] + $ Ь [3] + $ Ь [4] + $ Ь [5] + $ Ь [6] + $ Ь [7] + $ Ь [8] + $ б [9] + $ Ь [10] + $ Ь [11] + $ Ь [12] + $ Ь [13] + $ Ь [14] + $ Ь [15] + $ Ь [16] + $ б [17] + $ Ь [18] + $ Ь [19] + $ Ь [20] + $ Ь [21] + $ Ь [22] + $ Ь [23] + $ Ь [24] + $ б [25 ] + $ B [26] + $ B [27] + $ B [28] + $ B [29]) 3,125 0,8780475426722 1,7543 Любые идеи? – George

0

$ а = Get-счетчик -Counter "\ Processor (_Total) \% загруженности процессора" -SampleInterval 2 -MaxSamples 15 если (($ a.CounterSamples.CookedValue | Measure-Object -Средняя) .average -gt 90)

{

выполнить некоторый тип оповещения сценария

}

Тогда все, что вам нужно сделать, это использовать планировщик задач для выполнения на определенном интервале ....

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

  • Нет связанных вопросов^_^