Получает данные счетчиков производительности на локальном компьютере и удаленных компьютерах.
Синтаксис
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
См. также