Get-Counter
Назначение: Windows PowerShell 2.0
Получает данные счетчиков производительности на локальном компьютере и удаленных компьютерах.
Синтаксис
Get-Counter [-Counter] <string[]> [-ComputerName <string[]>] [-Continuous] [-MaxSamples <Int64>] [-SampleInterval <int>] [<CommonParameters>]
Get-Counter -ListSet <string[]> [-ComputerName <string[]>] [<CommonParameters>]
Описание
Командлет Get-Counter в режиме реального времени получает данные счетчиков производительности непосредственно из средств наблюдения за производительностью Windows. Его можно использовать для получения данных о производительности локального компьютера и удаленных компьютеров через заданный интервал времени.
При вызове без параметров команда "Get-Counter" возвращает данные для набора системных счетчиков.
С помощью параметров командлета Get-Counter можно задавать один или несколько компьютеров, перечислять наборы счетчиков производительности и счетчики, входящие в такие наборы, а также задавать размер и интервал выборки.
Параметры
-ComputerName <string[]>
Получает данные от указанных компьютеров. Введите NetBIOS-имя, IP-адрес или полные доменные имена компьютеров. По умолчанию используется значение "Локальный компьютер".
Примечание. Командлет Get-Counter не использует удаленное взаимодействие Windows PowerShell. Параметр ComputerName командлета Get-Counter можно использовать, даже если компьютер не настроен на удаленное взаимодействие в Windows PowerShell.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Continuous
Непрерывное получение выборок до тех пор, пока не будут нажаты клавиши CTRL+C. По умолчанию командлет Get-Counter получает только одну выборку счетчика. Для задания интервала непрерывного получения выборок можно использовать параметр SampleInterval.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Counter <string[]>
Получает данные от заданных счетчиков производительности. Введите один или несколько путей счетчиков. Подстановочные знаки разрешается использовать только в значении Instance. Кроме того, строки путей счетчиков можно по конвейеру передать в Get-Counter.
Путь счетчика имеет следующий формат:
"[\\<ComputerName>]\<CounterSet>(<Instance>)\<CounterName>"
Пример:
"\\Server01\Процессор(2)\% User Time".
Элемент <ComputerName> указывать не обязательно. Если он не указан, командлет Get-Counter использует значение параметра ComputerName.
Примечание. Чтобы получить пути счетчиков в нужном формате, следует использовать параметр ListSet для получения набора счетчиков производительности. Свойства Paths и PathsWithInstances каждого набора счетчиков производительности содержат пути отдельных счетчиков в формате строки. Строки путей счетчиков можно сохранить в переменной. Также можно передать строку по конвейеру непосредственно другой команде Get-Counter. Порядок использования см. в примерах.
Обязательно? |
true |
Позиция? |
2 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
true |
-ListSet <string[]>
Получает заданные наборы счетчиков производительности на компьютерах. Введите имена наборов счетчиков. Подстановочные знаки разрешены. Кроме того, можно передать имена наборов счетчиков в Get-Counter с помощью конвейера.
Обязательно? |
true |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue, ByPropertyName) |
Принимать подстановочные знаки? |
true |
-MaxSamples <Int64>
Задает число выборок, получаемых для каждого счетчика. Значение по умолчанию: 1 выборка. Для непрерывного получения выборок (без ограничения максимального размера выборки) используйте параметр Continuous.
Для сбора очень больших наборов данных следует использовать команду Get-Counter в качестве фонового задания Windows PowerShell. Дополнительные сведения см. в разделах about_Jobs и Start-Job.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-SampleInterval <int>
Задает интервал между выборками в секундах. Минимальное значение (и значение по умолчанию) —1 секунда.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
1 |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String[] Пути счетчиков и имена наборов счетчиков (ListSet) можно передать в Get-Counter с помощью конвейера. |
Выходные данные |
Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample Параметр ListSet возвращает объекты Microsoft.PowerShell.Commands.GetCounter.CounterSet. Параметр Counter возвращает объекты Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet. Значением каждого счетчика является объект Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample. |
Примечания
Для защиты счетчиков производительности часто используются списки управления доступом (ACL). Чтобы получить все доступные счетчики производительности, необходимо запускать Windows PowerShell командой "Запуск от имени администратора".
По умолчанию командлет Get-Counter получает одну выборку в течение односекундного интервала выборки. Чтобы это изменить, воспользуйтесь параметрами MaxSamples и Continuous.
Заданные значения параметров MaxSamples и SampleInterval применяются в отношении всех счетчиков на всех компьютерах, указанных в команде. Чтобы задать различные значения для разных счетчиков, следует использовать отдельные команды Get-Counter для каждого счетчика.
Пример 1
C:\PS># Get-Counter
Описание
-----------
Эта команда возвращает все наборы счетчиков на локальном компьютере.
C:\PS> get-counter -ListSet *
Поскольку многие наборы счетчиков защищены с помощью списков управления доступом (ACL), то прежде чем использовать команду Get-Counter, необходимо запустить Windows PowerShell командой "Запуск от имени администратора".
Пример 2
C:\PS># Get-Counter
Описание
-----------
Эта команда возвращает текущие суммарные значения счетчика "% загруженности процессора" для всех процессоров на локальном компьютере. Сбор данных выполняется каждые две секунды, пока не будут получены три значения.
C:\PS> get-counter -Counter "\Процессор(_Total)\% загруженности процессора" -SampleInterval 2 -MaxSamples 3
Пример 3
C:\PS># Get-Counter
Описание
-----------
Эта команда возвращает список имен всех наборов счетчиков на локальном компьютере в алфавитном порядке.
C:\PS> get-counter -listset * | sort-object countersetname | format-table countersetname
Пример 4
C:\PS># Get-Counter
Описание
-----------
В этих командах свойство Path набора счетчиков используется для определения путей счетчиков производительности в необходимом формате. Аналогичные команды можно использовать для получения путей счетчиков в правильном формате.
Первая команда возвращает пути счетчиков производительности в наборе счетчиков "Память" на локальном компьютере.
C:\PS> (get-counter -listset Память).paths
\Память\Page Faults/sec
\Память\Available Bytes
\Память\Committed Bytes
\Память\Commit Limit
\Память\Write Copies/sec
\Память\Transition Faults/sec
\Память\Cache Faults/sec
\Память\Demand Zero Faults/sec
\Память\Pages/sec
\Память\Pages Input/sec
...
Вторая команда возвращает пути, содержащие слово "cache".
C:\PS> (get-counter -listset Память).paths | where {$_ -like "*cache*"}
\Память\Cache Faults/sec
\Память\Cache Bytes
\Память\Cache Bytes Peak
\Память\System Cache Resident Bytes
\Память\Standby Cache Reserve Bytes
\Память\Standby Cache Normal Priority Bytes
\Память\Standby Cache Core Bytes
Пример 5
C:\PS># Get-Counter
Описание
-----------
Эти команды возвращают данные счетчика "Disk Reads/sec" на компьютерах Server01 и Server02.
Первая команда сохраняет путь счетчика "Disk Reads/sec" в переменной $diskreads.
C:\PS> $diskreads = "\Логический диск(C:)\Обращений чтения с диска/с"
Вторая команда с помощью оператора конвейера (|) передает путь счетчика из переменной $diskreads в командлет Get-Counter. Параметр MaxSamples, используемый в команде, ограничивает число выводимых выборок до 10.
C:\PS> $diskreads | get-counter -computer Server01, Server02 -maxsamples 10
Пример 6
C:\PS># Get-Counter
Описание
-----------
Эта команда возвращает в необходимом формате пути счетчиков производительности "Физический диск", включая экземпляры имен.
C:\PS> (get-counter -list Физический диск).pathswithinstances
Пример 7
C:\PS># Get-Counter
Описание
-----------
Эти команды возвращают значение счетчика производительности "% DPC Time" для 50 случайным образом выбранных компьютеров предприятия.
Первая команда использует командлет Get-Content для получения списка всех серверов предприятия из файла Servers.txt. В ней используется командлет Get-Random для получения 50 имен серверов, выбранных случайным образом из файла Servers.txt. Результаты сохраняются в переменной $servers.
C:\PS> $servers = get-random (get-content servers.txt) -count 50
Вторая команда сохраняет путь счетчика "% DPC Time" в переменной $Counter. Путь счетчика содержит подстановочный знак в имени экземпляра, чтобы получать данные со всех процессоров на каждом из компьютеров.
C:\PS> $counter = "\Процессор(*)\% времени DPC"
Третья команда использует командлет Get-Counter для получения значений счетчика. В ней используется параметр Counter для задания счетчиков и параметр ComputerName для задания компьютеров, сохраненных в переменной $servers.
C:\PS> get-counter -Counter $counter -computername $servers
Пример 8
C:\PS># Get-Counter
Описание
-----------
Эти команды возвращают одно значение для всех счетчиков производительности в наборе счетчиков памяти на локальном компьютере.
Первая команда получает пути счетчиков и сохраняет их в переменной $memCounters.
C:\PS> $memCounters = (get-counter -list Память).paths
Вторая команда использует командлет Get-Counter для получения данных каждого счетчика. Для задания счетчиков в переменной $memCounters используется параметр Counter.
C:\PS> get-counter -counter $memCounters
Пример 9
C:\PS># Get-Counter
Описание
-----------
В этом примере показаны значения свойств объекта PerformanceCounterSample, представляющего каждую выборку данных.
Первая команда сохраняет путь счетчика в переменной $counter.
C:\PS> $counter = "\\SERVER01\Процесс(Idle)\% загруженности процессора"
Вторая команда использует командлет Get-Counter для получения одной выборки значений счетчика. Результат сохраняется в переменной $data.
C:\PS> $data = get-counter $counter
Третья команда использует командлет Format-List для отображения в виде списка всех свойств свойства CounterSamples объекта набора выборки.
C:\PS> $data.countersamples | format-list -property *
Path : \\SERVER01\Процесс(Idle)\% загруженности процессора
InstanceName : idle
CookedValue : 198.467899571389
RawValue : 14329160321003
SecondValue : 128606459528326201
MultipleCount : 1
CounterType : Timer100Ns
Timestamp : 15.07.2008 18:39:12
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
Свойства объекта CounterSamples можно использовать для проверки, выбора, упорядочения и группирования данных.
Пример 10
C:\PS># Get-Counter
Описание
-----------
Эта команда запускает команду Get-Counter в качестве фонового задания. Дополнительные сведения см. в разделе Start-Job.
C:\PS> $counters = "\Логический диск(_Total)\% свободного места"
C:\PS> start-job -scriptblock {get-counter -counter $counters -maxsamples 1000)
Пример 11
C:\PS># Get-Counter
Описание
-----------
Эта команда использует командлеты Get-Counter и Get-Random для определения процентной доли свободного места на диске на 50 компьютерах, выбранных случайным образом из файла Servers.txt.
C:\PS> get-counter -computername (get-random servers.txt -count 50) -counter "\Логический диск(*)\% свободного места"
Пример 12
C:\PS># Get-Counter
Описание
-----------
В этом примере показано, как сопоставить данные счетчика с компьютером, к которому он относится, и как работать с данными.
Первая команда с помощью командлета Get-Counter получает значение счетчика "Логический диск\% свободного места" для двух удаленных компьютеров S1 и S2. Эта команда сохраняет результат в переменной $a.
$a = get-counter "\Логический диск(_Total)\% свободного места" -comp s1, s2
Вторая команда отображает результаты, сохраненные в переменной $a. Все данные сохраняются в объекте, однако это неочевидно из этой формы.
C:\PS> $a
Counter Paths: \\s1\\Логический диск(c:)\% свободного места, \\s1\\Логический диск(d:)\% свободного места, \\s1\\Логический диск(_Total)\% свободного места, \\s2\\Логический диск(c:)\% свободного места, \\s2\\Логический диск(_Total)\% свободного места
Timestamp : 15.07.2008 17:09:08
Cooked Values : "0.327058823529412", "17.8952248493278", "12.9994033060778", "75.0754805595626", "75.0754805595626"
Третья команда отображает таблицу значений свойства CounterSamples объекта PerformanceCounterSampleSet, возвращаемого командлетом Get-Counter. (Чтобы просмотреть все свойства и методы этого объекта, передайте его по конвейеру командлету Get-Member.)
C:\PS> $a.countersamples | format-table -auto
Path InstanceName CookedValue
---- ------------ -----------
\\s1\\Логический диск(c:)\% свободного места c: 0.327058823529412
\\s1\\Логический диск(d:)\% свободного места d: 17.8952248493278
\\s1\\Логический диск(_Total)\% свободного места _total 12.9994033060778
\\s2\\Логический диск(c:)\% свободного места c: 75.0754805595626
\\s2\\Логический диск(_Total)\% свободного места _total 75.0754805595626
Свойство CounterSamples содержит объект PerformanceCounterSample, имеющий собственные свойства и методы. В четвертой команде используется индекс массива для получения выборки от первого счетчика и оператор конвейера для передачи объекта выборки счетчика командлету Format-List, который отображает все свойства и методы объекта в виде списка. При этом отображается множество данных для каждого объекта выборки счетчика.
В четвертой команде показано, как выбирать данные из выборок счетчика. Она использует командлет Where-Object для получения только тех выборок счетчика, у которых значение параметра CookedValue меньше 15.
C:\PS> $a.countersamples | where {$_.cookedvalue -lt 15}
Path InstanceName CookedValue
---- ------------ -----------
\\s1\\Логический диск(c:)\% свободного места c: 0.327058823529412
\\s1\\Логический диск(_Total)\% свободного места _total 12.9994033060778
Пример 13
C:\PS># Get-Counter
Описание
-----------
В этом примере показано, как сортировать извлеченные данные счетчика производительности. В данном примере на компьютере обнаруживаются процессы, которые обеспечивают наибольшую загруженность процессора во время выборки.
Первая команда получает данные счетчика "Процесс\% загруженности процессора" для всех процессов, выполняющихся на компьютере. Результаты сохраняются в переменной $p.
C:\PS> $p = get-counter '\Процесс(*)\% загруженности процессора'
Вторая команда извлекает свойство CounterSamples объекта набора выборок, указанного в переменной $p. Кроме того, выполняется сортировка выборок в порядке убывания значения выборки с обработкой. Команда использует командлет Format-Table с параметром AutoFormat для отображения столбцов в виде таблицы.
C:\PS> $p.CounterSamples | sort-object -property CookedValue -Descending | format-table -auto
Path InstanceName CookedValue
---- ------------ -----------
\\server01\Процесс(_total)\% загруженности процессора _total 200.00641042078
\\server01\Процесс(Idle)\% загруженности процессора idle 200.00641042078
\\server01\Процесс(explorer#1)\% загруженности процессора explorer 0
\\server01\Процесс(dwm#1)\% загруженности процессора dwm 0
\\server01\Процесс(taskeng#1)\% загруженности процессора taskeng 0
\\server01\Процесс(taskhost#1)\% загруженности процессора taskhost 0
\\server01\Процесс(winlogon)\% загруженности процессора winlogon 0
\\server01\Процесс(csrss)\% загруженности процессора csrss 0
Пример 14
C:\PS># Get-Counter
Описание
-----------
Эти команды обнаруживают выполняемые на компьютере процессы с наибольшими рабочими наборами. Процессы перечисляются в порядке убывания размера рабочего набора процесса.
Первая команда получает по одной выборке данных счетчика "Process\Working Set - Private" для каждого процесса. Команда сохраняет данные счетчика в переменной $ws.
C:\PS> $ws = get-counter "\Процесс(*)\Рабочий набор (частный)"
Вторая команда с помощью оператора конвейера (|) передает данные, содержащиеся в свойстве CounterSamples, командлету Sort-Object, который упорядочивает данные процессов по убыванию значения свойства CookedValue. Другой оператор конвейера передает упорядоченные данные командлету Format-Table, который выводит данные в виде таблицы со столбцами InstanceName и CookedValue.
C:\PS> $ws.countersamples | sort-object -property cookedvalue -descending | format-table -property InstanceName, CookedValue -auto
InstanceName CookedValue
------------ -----------
_total 162983936
svchost 40370176
powershell 15110144
explorer 14135296
svchost 10928128
svchost 9027584
...
Пример 15
C:\PS># Get-Counter
Описание
-----------
Эта команда получает последовательность выборок счетчика Процессор\% загруженности процессора с односекундным интервалом по умолчанию. Чтобы остановить выполнение команды, нажмите сочетание клавиш CTRL+C.
C:\PS> get-counter -counter "\Процессор(_Total)\% загруженности процессора" -continuous