Получает данные счетчиков производительности на локальном компьютере и удаленных компьютерах.

Синтаксис

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\Processor(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

Описание
-----------
Эта команда возвращает текущие суммарные значения счетчика "% Processor Time" для всех процессоров на локальном компьютере. Сбор данных выполняется каждые две секунды, пока не будут получены три значения. 

C:\PS> get-counter -Counter "\Processor(_Total)\% Processor Time" -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 набора счетчиков используется для определения путей счетчиков производительности в необходимом формате. Аналогичные команды можно использовать для получения путей счетчиков в правильном формате.

Первая команда возвращает пути счетчиков производительности в наборе счетчиков "Memory" на локальном компьютере.  

C:\PS> (get-counter -listset memory).paths

\Memory\Page Faults/sec
\Memory\Available Bytes
\Memory\Committed Bytes
\Memory\Commit Limit
\Memory\Write Copies/sec
\Memory\Transition Faults/sec
\Memory\Cache Faults/sec
\Memory\Demand Zero Faults/sec
\Memory\Pages/sec
\Memory\Pages Input/sec
...

Вторая команда возвращает пути, содержащие слово "cache".

C:\PS> (get-counter -listset memory).paths | where {$_ -like "*cache*"}

\Memory\Cache Faults/sec
\Memory\Cache Bytes
\Memory\Cache Bytes Peak
\Memory\System Cache Resident Bytes
\Memory\Standby Cache Reserve Bytes
\Memory\Standby Cache Normal Priority Bytes
\Memory\Standby Cache Core Bytes






Пример 5

C:\PS># Get-Counter

Описание
-----------
Эти команды возвращают данные счетчика "Disk Reads/sec" на компьютерах Server01 и Server02. 

Первая команда сохраняет путь счетчика "Disk Reads/sec" в переменной $diskreads.

C:\PS> $diskreads = "\LogicalDisk(C:)\Disk Reads/sec"

Вторая команда с помощью оператора конвейера (|) передает путь счетчика из переменной $diskreads в командлет Get-Counter. Параметр MaxSamples, используемый в команде, ограничивает число выводимых выборок до 10.

C:\PS> $diskreads | get-counter -computer Server01, Server02 -maxsamples 10






Пример 6

C:\PS># Get-Counter

Описание
-----------
Эта команда возвращает в необходимом формате пути счетчиков производительности "PhysicalDisk", включая экземпляры имен. 

C:\PS> (get-counter -list physicaldisk).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 = "\Processor(*)\% DPC Time"

Третья команда использует командлет 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 memory).paths

Вторая команда использует командлет Get-Counter для получения данных каждого счетчика. Для задания счетчиков в переменной $memCounters используется параметр Counter.

C:\PS> get-counter -counter $memCounters






Пример 9

C:\PS># Get-Counter

Описание
-----------
В этом примере показаны значения свойств объекта PerformanceCounterSample, представляющего каждую выборку данных.

Первая команда сохраняет путь счетчика в переменной $counter. 

C:\PS> $counter = "\\SERVER01\Process(Idle)\% Processor Time" 

Вторая команда использует командлет Get-Counter для получения одной выборки значений счетчика. Результат сохраняется в переменной $data.

C:\PS> $data = get-counter $counter

Третья команда использует командлет Format-List для отображения в виде списка всех свойств свойства CounterSamples объекта набора выборки.

C:\PS> $data.countersamples | format-list -property *

Path			 : \\SERVER01\process(idle)\% processor time
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 = "\LogicalDisk(_Total)\% Free Space"

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 "\LogicalDisk(*)\% Free Space"






Пример 12

C:\PS># Get-Counter

Описание
-----------
В этом примере показано, как сопоставить данные счетчика с компьютером, к которому он относится, и как работать с данными.


Первая команда с помощью командлета Get-Counter получает значение счетчика "LogicalDisk\% Free Space" для двух удаленных компьютеров S1 и S2. Эта команда сохраняет результат в переменной $a.

$a = get-counter "\LogicalDisk(_Total)\% Free Space" -comp s1, s2



Вторая команда отображает результаты, сохраненные в переменной $a. Все данные сохраняются в объекте, однако это неочевидно из этой формы.

C:\PS> $a

Counter Paths: \\s1\\logicaldisk(c:)\% free space, \\s1\\logicaldisk(d:)\% free space, \\s1\\logicaldisk(_total)\% free space, \\s2\\logicaldisk(c:)\% free space, \\s2\\logicaldisk(_total)\% free space

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\\logicaldisk(c:)\% free space	 c:		 0.327058823529412
\\s1\\logicaldisk(d:)\% free space	 d:			17.8952248493278
\\s1\\logicaldisk(_total)\% free space   _total		12.9994033060778
\\s2\\logicaldisk(c:)\% free space	 c:			75.0754805595626
\\s2\\logicaldisk(_total)\% free space   _total		75.0754805595626

Свойство CounterSamples содержит объект PerformanceCounterSample, имеющий собственные свойства и методы. В четвертой команде используется индекс массива для получения выборки от первого счетчика и оператор конвейера для передачи объекта выборки счетчика командлету Format-List, который отображает все свойства и методы объекта в виде списка. При этом отображается множество данных для каждого объекта выборки счетчика.



В четвертой команде показано, как выбирать данные из выборок счетчика. Она использует командлет Where-Object для получения только тех выборок счетчика, у которых значение параметра CookedValue меньше 15.

C:\PS> $a.countersamples | where {$_.cookedvalue -lt 15}

Path									 InstanceName	 CookedValue
----									 ------------	 -----------
\\s1\\logicaldisk(c:)\% free space	 c:		 0.327058823529412
\\s1\\logicaldisk(_total)\% free space   _total		12.9994033060778






Пример 13

C:\PS># Get-Counter

Описание
-----------
В этом примере показано, как сортировать извлеченные данные счетчика производительности. В данном примере на компьютере обнаруживаются процессы, которые обеспечивают наибольшую загруженность процессора во время выборки.

Первая команда получает данные счетчика "Process\% Processor Time" для всех процессов, выполняющихся на компьютере. Результаты сохраняются в переменной $p.

C:\PS> $p = get-counter '\Process(*)\% Processor Time' 


Вторая команда извлекает свойство CounterSamples объекта набора выборок, указанного в переменной $p. Кроме того, выполняется сортировка выборок в порядке убывания значения выборки с обработкой. Команда использует командлет Format-Table с параметром AutoFormat для отображения столбцов в виде таблицы. 

C:\PS> $p.CounterSamples | sort-object -property CookedValue -Descending | format-table -auto

Path											InstanceName	CookedValue
----											------------	-----------
\\server01\process(_total)\% processor time		_total		200.00641042078
\\server01\process(idle)\% processor time		idle		200.00641042078
\\server01\process(explorer#1)\% processor time	explorer					0
\\server01\process(dwm#1)\% processor time		 dwm						 0
\\server01\process(taskeng#1)\% processor time	 taskeng					 0
\\server01\process(taskhost#1)\% processor time	taskhost					0
\\server01\process(winlogon)\% processor time	winlogon					0
\\server01\process(csrss)\% processor time		 csrss					 0






Пример 14

C:\PS># Get-Counter

Описание
-----------
Эти команды обнаруживают выполняемые на компьютере процессы с наибольшими рабочими наборами. Процессы перечисляются в порядке убывания размера рабочего набора процесса. 

Первая команда получает по одной выборке данных счетчика "Process\Working Set - Private" для каждого процесса. Команда сохраняет данные счетчика в переменной $ws.

C:\PS> $ws = get-counter "\Process(*)\Working Set - Private"

Вторая команда с помощью оператора конвейера (|) передает данные, содержащиеся в свойстве 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

Описание
-----------
Эта команда получает последовательность выборок счетчика Processor\% Processor Time с односекундным интервалом по умолчанию. Чтобы остановить выполнение команды, нажмите сочетание клавиш CTRL+C.

C:\PS> get-counter -counter "\processor(_total)\% processor time" -continuous






См. также