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





См. также

Концепции

Import-Counter
Export-Counter