Get-Counter
Возвращает данные счетчика производительности с локальных и удаленных компьютеров.
Синтаксис
GetCounterSet (по умолчанию)
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
ListSetSet
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Описание
Командлет Get-Counter
получает данные счетчика производительности непосредственно из инструментария мониторинга производительности в семействе операционных систем Windows.
Get-Counter
Получает данные о производительности с локального компьютера или удаленных компьютеров.
С помощью этих Get-Counter
параметров можно указать один или несколько компьютеров, перечислить наборы счетчиков производительности и содержащиеся в них экземпляры, задать интервалы выборки и указать максимальное количество выборок. Без параметров Get-Counter
получает данные счетчика производительности для набора системных счетчиков.
Многие наборы счетчиков защищены списками управления доступом (ACL). Чтобы просмотреть все наборы счетчиков, откройте PowerShell с параметром Запуск от имени администратора .
Замечание
Имена счетчиков производительности локализованы. В примерах, показанных здесь, используются английские имена объектов производительности, счетчиков и экземпляров. Имена будут отличаться в системе, которая использует другой язык.
Get-Counter -ListSet
Используйте команду, чтобы просмотреть локализованные имена.
Примеры
Пример 1: Получите список наборов счетчиков
В этом примере получен список наборов счетчиков на локальном компьютере.
Get-Counter -ListSet *
CounterSetName : Processor
MachineName : .
CounterSetType : MultiInstance
Description : The Processor performance object consists of counters that measure aspects ...
computer that performs arithmetic and logical computations, initiates ...
computer can have multiple processors. The processor object represents ...
Paths : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
PathsWithInstances : {\Processor(0)\% Processor Time, \Processor(1)\% Processor Time, ...
Counter : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
Get-Counter
использует параметр ListSet со звездочкой (*
) для получения списка наборов счетчиков.
Точка (.
) в столбце MachineName обозначает локальный компьютер.
Пример 2: Укажите SampleInterval и MaxSamples
В этом примере получены данные счетчика для всех процессоров на локальном компьютере. Данные собираются с интервалом в две секунды до тех пор, пока не будет три выборки.
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Timestamp CounterSamples
--------- --------------
6/18/2019 14:39:56 \\Computer01\processor(_total)\% processor time :
20.7144271584086
6/18/2019 14:39:58 \\Computer01\processor(_total)\% processor time :
10.4391790575511
6/18/2019 14:40:01 \\Computer01\processor(_total)\% processor time :
37.5968799396998
Get-Counter
использует параметр Counter для указания пути \Processor(_Total)\% Processor Time
к счетчику. Параметр SampleInterval задает двухсекундный интервал для проверки счетчика.
MaxSamples определяет, что три — это максимальное количество проверок счетчика.
Пример 3: Получение непрерывных выборок счетчика
В этом примере каждую секунду принимаются непрерывные выборки для счетчика. Чтобы остановить выполнение команды, нажмите клавиши CTRL+C. Чтобы указать более длительный интервал между выборками, используйте параметр SampleInterval .
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
Timestamp CounterSamples
--------- --------------
6/19/2019 15:35:03 \\Computer01\processor(_total)\% processor time :
43.8522842937022
6/19/2019 15:35:04 \\Computer01\processor(_total)\% processor time :
29.7896844697383
6/19/2019 15:35:05 \\Computer01\processor(_total)\% processor time :
29.4962645638135
6/19/2019 15:35:06 \\Computer01\processor(_total)\% processor time :
25.5901500127408
Get-Counter
использует параметр Counter для указания счетчика \Processor\% Processor Time
.
Параметр Continuous указывает на получение выборок каждую секунду до тех пор, пока команда не будет остановлена нажатием клавиши CTRL+C.
Пример 4: Алфавитный список наборов счетчиков
В этом примере конвейер используется для задания списка счетчиков, а затем сортировки списка в алфавитном порядке.
Get-Counter -ListSet * | Sort-Object -Property CounterSetName | Format-Table -AutoSize
CounterSetName MachineName CounterSetType Description
-------------- ----------- -------------- -----------
.NET CLR Data . SingleInstance .Net CLR Data
.NET Data Provider for SqlServer . SingleInstance Counters for System.Data.SqlClient
AppV Client Streamed Data Percentage . SingleInstance Size of data streamed to disk ...
Authorization Manager Applications . SingleInstance The set of Counters for ...
BitLocker . MultiInstance BitLocker Drive Encryption ...
Bluetooth Device . SingleInstance Counters related to a remote ...
Cache . SingleInstance The Cache performance object ...
Client Side Caching . SingleInstance Performance counters for SMB ...
Get-Counter
использует параметр ListSet со звездочкой (*
) для получения полного списка наборов счетчиков. Объекты CounterSet отправляются вниз по конвейеру.
Sort-Object
использует параметр Property , чтобы указать, что объекты сортируются по CounterSetName. Объекты отправляются по конвейеру в Format-Table
. Параметр autoSize настраивает ширину столбцов, чтобы свести к минимуму усечение.
Точка (.
) в столбце MachineName обозначает локальный компьютер.
Пример 5: Запуск фонового задания для получения данных счетчика
В этом примере Start-Job
команда выполняется Get-Counter
в качестве фонового задания на локальном компьютере.
Чтобы просмотреть выходные данные счетчика производительности из задания, используйте командлет.Receive-Job
Start-Job -ScriptBlock {Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Counter -Counter
Start-Job
использует параметр ScriptBlock для выполнения Get-Counter
команды.
Get-Counter
использует параметр Counter для указания пути \LogicalDisk(_Total)\% Free Space
к счетчику.
Параметр MaxSamples указывает на получение 1000 выборок счетчика.
Пример 6: Получение данных счетчика с нескольких компьютеров
В этом примере переменная используется для получения данных счетчика производительности с двух компьютеров.
$DiskReads = "\LogicalDisk(C:)\Disk Reads/sec"
$DiskReads | Get-Counter -ComputerName Server01, Server02 -MaxSamples 10
Timestamp CounterSamples
--------- --------------
6/21/2019 10:51:04 \\Server01\logicaldisk(C:)\disk reads/sec :
0
\\Server02\logicaldisk(C:)\disk reads/sec :
0.983050344269146
В $DiskReads
переменной хранится путь счетчика \LogicalDisk(C:)\Disk Reads/sec
. Переменная $DiskReads
отправляется вниз по конвейеру в Get-Counter
.
Counter является первым параметром позиции и принимает путь, хранящийся в $DiskReads
.
ComputerName указывает два компьютера, а MaxSamples указывает на получение 10 выборок с каждого компьютера.
Пример 7: Получение значений экземпляра счетчика с нескольких случайных компьютеров
В этом примере получено значение счетчика производительности на 50 случайных удаленных компьютерах предприятия. Параметр ComputerName использует случайные имена компьютеров, хранящиеся в переменной. Чтобы обновить имена компьютеров в переменной, создайте переменную заново.
Альтернативой именам серверов в параметре ComputerName является использование текстового файла. Рассмотрим пример.
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
Путь счетчика включает звездочку (*
) в имени экземпляра для получения данных для каждого из процессоров удаленного компьютера.
$Servers = Get-Random (Get-Content -Path C:\Servers.txt) -Count 50
$Counter = "\Processor(*)\% Processor Time"
Get-Counter -Counter $Counter -ComputerName $Servers
Timestamp CounterSamples
--------- --------------
6/20/2019 12:20:35 \\Server01\processor(0)\% processor time :
6.52610319637854
\\Server01\processor(1)\% processor time :
3.41030663625782
\\Server01\processor(2)\% processor time :
9.64189975649925
\\Server01\processor(3)\% processor time :
1.85240835619747
\\Server01\processor(_total)\% processor time :
5.35768447160776
Командлет Get-Random
использует для Get-Content
выбора из файла 50 случайных имен компьютеров Servers.txt
. Имена удаленных компьютеров хранятся в $Servers
переменной. Путь \Processor(*)\% Processor Time
к счетчику $Counter
хранится в переменной.
Get-Counter
использует параметр Counter для указания счетчиков в переменной $Counter
.
Параметр ComputerName указывает имена компьютеров в $Servers
переменной.
Пример 8: Используйте свойство Path для получения отформатированных имен путей
В этом примере используется свойство Path набора счетчиков для поиска отформатированных имен путей для счетчиков производительности.
Конвейер используется вместе с Where-Object
командлетом для поиска подмножества имен путей. Чтобы найти счетчик задает полный список путей счетчика, удалите конвейер (|
) и Where-Object
команду.
Это $_
автоматическая переменная для текущего объекта в конвейере.
Дополнительные сведения см. в разделе about_Automatic_Variables.
(Get-Counter -ListSet Memory).Paths | Where-Object { $_ -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
\Memory\Long-Term Average Standby Cache Lifetime (s)
Get-Counter
использует параметр ListSet для указания набора счетчиков памяти . Команда заключена в круглые скобки, так что свойство Paths возвращает каждый путь в виде строки. Объекты отправляются по конвейеру в Where-Object
.
Where-Object
использует переменную $_
для обработки каждого объекта и использует -like
оператор для поиска совпадений для строки *Cache*
. Звездочки (*
) являются подстановочными знаками для любых символов.
Пример 9: Используйте свойство PathsWithInstances для получения отформатированных имен путей
В этом примере получены отформатированные имена путей, которые включают экземпляры для счетчиков производительности PhysicalDisk .
(Get-Counter -ListSet PhysicalDisk).PathsWithInstances
\PhysicalDisk(0 C:)\Current Disk Queue Length
\PhysicalDisk(_Total)\Current Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Time
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(0 C:)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Read Time
\PhysicalDisk(_Total)\% Disk Read Time
Get-Counter
использует параметр ListSet для указания набора счетчиков PhysicalDisk . Команда заключена в круглые скобки, так что свойство PathsWithInstances возвращает каждый экземпляр пути в виде строки.
Пример 10: Получение одного значения для каждого счетчика в наборе счетчиков
В этом примере для каждого счетчика производительности в наборе счетчиков памяти локального компьютера возвращается одно значение.
$MemCounters = (Get-Counter -ListSet Memory).Paths
Get-Counter -Counter $MemCounters
Timestamp CounterSamples
--------- --------------
6/19/2019 12:05:00 \\Computer01\memory\page faults/sec :
868.772077545597
\\Computer01\memory\available bytes :
9031176192
\\Computer01\memory\committed bytes :
8242982912
\\Computer01\memory\commit limit :
19603333120
Get-Counter
использует параметр ListSet для указания набора счетчиков памяти . Команда заключена в круглые скобки, так что свойство Paths возвращает каждый путь в виде строки. Пути хранятся в $MemCounters
переменной.
Get-Counter
использует параметр Counter для указания путей к счетчикам в переменной $MemCounters
.
Пример 11: Отображение значений свойств объекта
Значения свойств в объекте PerformanceCounterSample представляют каждую выборку данных. В этом примере мы используем свойства объекта CounterSamples для проверки, выбора, сортировки и группировки данных.
$Counter = "\\Server01\Process(Idle)\% Processor Time"
$Data = Get-Counter $Counter
$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 : 6/19/2019 12:20:49
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
Путь к счетчику $Counter
хранится в переменной.
Get-Counter
Получает одну выборку значений счетчика и сохраняет результаты в $Data
переменной. Переменная $Data
использует свойство CounterSamples для получения свойств объекта. Объект отправляется по конвейеру в Format-List
.
Параметр Property использует подстановочный знак звездочки (*
) для выбора всех свойств.
Пример 12: Значения массива счетчиков производительности
В этом примере переменная хранит каждый счетчик производительности. Свойство CounterSamples — это массив, который может отображать определенные значения счетчиков.
Чтобы отобразить каждую выборку счетчика, используйте $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples[0]
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 1.33997091699662
Get-Counter
использует параметр Counter для указания счетчика \Processor(*)\% Processor Time
. Значения хранятся в $Counter
переменной.
$Counter.CounterSamples[0]
Отображает значение массива для первого значения счетчика.
Пример 13: Сравнение значений счетчиков производительности
В этом примере определяется количество процессорного времени, использованное каждым процессором на локальном компьютере. Свойство CounterSamples используется для сравнения данных счетчика с указанным значением.
Чтобы отобразить каждую выборку счетчика, используйте $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples | Where-Object { $_.CookedValue -lt "20" }
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 12.6398025240208
\\Computer01\processor(1)\% processor time 1 15.7598095767344
Get-Counter
использует параметр Counter для указания счетчика \Processor(*)\% Processor Time
. Значения хранятся в $Counter
переменной. Хранящиеся в $Counter.CounterSamples
них объекты отправляются вниз по конвейеру.
Where-Object
использует блок скрипта для сравнения каждого значения объектов с указанным значением 20
. Это $_.CookedValue
переменная для текущего объекта в конвейере. Отображаются счетчики со значением CookedValue , которое меньше 20.
Пример 14: Сортировка данных счетчика производительности
В этом примере показано, как сортировать данные счетчика производительности. В примере найдены процессы на компьютере, которые используют наибольшее процессорное время во время выборки.
$Procs = Get-Counter -Counter "\Process(*)\% Processor Time"
$Procs.CounterSamples | Sort-Object -Property CookedValue -Descending |
Format-Table -Property Path, InstanceName, CookedValue -AutoSize
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\process(_total)\% processor time _total 395.464129650573
\\Computer01\process(idle)\% processor time idle 389.356575524695
\\Computer01\process(mssense)\% processor time mssense 3.05377706293879
\\Computer01\process(csrss#1)\% processor time csrss 1.52688853146939
\\Computer01\process(microsoftedgecp#10)\% processor time microsoftedgecp 1.52688853146939
\\Computer01\process(runtimebroker#5)\% processor time runtimebroker 0
\\Computer01\process(settingsynchost)\% processor time settingsynchost 0
\\Computer01\process(microsoftedgecp#16)\% processor time microsoftedgecp 0
Get-Counter
использует параметр Counter для указания счетчика \Process(*)\% Processor Time
для всех процессов на локальном компьютере. Результат хранится в переменной $Procs
. Переменная $Procs
со свойством CounterSamples отправляет объекты PerformanceCounterSample вниз по конвейеру.
Sort-Object
использует параметр Property для сортировки объектов по CookedValue в порядке убывания .
Format-Table
использует параметр Property для выбора столбцов для вывода. Параметр autoSize настраивает ширину столбцов, чтобы свести к минимуму усечение.
Параметры
-ComputerName
Указывает одно имя компьютера или массив имен удаленных компьютеров, разделенных запятыми. Используйте имя NetBIOS, IP-адрес или полное доменное имя компьютера.
Чтобы получить данные счетчика производительности с локального компьютера, исключите параметр ComputerName .
Для выходных данных, таких как ListSet , содержащего столбец MachineName , точка (.
) указывает на локальный компьютер.
Get-Counter
не полагается на удаленное взаимодействие PowerShell. Вы можете использовать параметр ComputerName, даже если компьютер не настроен для выполнения удаленных команд.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | CN |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Continuous
Если задан непрерывный , возвращает примеры, Get-Counter
пока не нажимаете клавиши CTRL+C. Выборки получаются каждую секунду для каждого указанного счетчика производительности. Используйте параметр SampleInterval для увеличения интервала между непрерывными выборками.
Свойства параметра
Тип: | SwitchParameter |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
GetCounterSet
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Counter
Указывает путь к одному или нескольким путям-счетчикам. Пути вводятся в виде массива, разделенного запятыми, переменной или значений из текстового файла. Вы можете отправить строки пути счетчика вниз по конвейеру в Get-Counter
.
Пути счетчиков используют следующий синтаксис:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Рассмотрим пример.
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
Это \\ComputerName
значение является необязательным в пути счетчика производительности. Если путь счетчика не содержит имя компьютера, Get-Counter
используется локальный компьютер.
Звездочка (*
) в экземпляре является подстановочным знаком для получения всех экземпляров счетчика.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | True |
DontShow: | False |
Наборы параметров
GetCounterSet
Position: | 1 |
Обязательно: | False |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-ListSet
Список наборов счетчиков производительности на компьютерах. Используйте звездочку (*
) для указания всех наборов счетчиков. Введите одно имя или строку с именами наборов счетчиков, разделенную запятыми. Вы можете отправлять имена наборов счетчиков вниз по конвейеру.
Чтобы получить счетчик задает отформатированные пути к счетчику, используйте параметр ListSet . Свойства Paths и PathsWithInstances каждого набора счетчиков содержат отдельные пути счетчиков, отформатированные в виде строки.
Строки пути счетчика можно сохранить в переменной или использовать конвейер для отправки строки другой Get-Counter
команде.
Например, чтобы отправить путь к каждому счетчику процессора в Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | True |
DontShow: | False |
Наборы параметров
ListSetSet
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-MaxSamples
Указывает количество выборок, получаемых от каждого указанного счетчика производительности. Чтобы получить постоянный поток сэмплов, используйте параметр Continuous .
Если параметр MaxSamples не указан Get-Counter
, получает только одну выборку для каждого указанного счетчика.
Чтобы собрать большой набор данных, запустите Get-Counter
его в качестве фонового задания PowerShell. Дополнительные сведения см. в разделе about_Jobs.
Свойства параметра
Тип: | Int64 |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
GetCounterSet
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-SampleInterval
Указывает количество секунд между выборками для каждого указанного счетчика производительности. Если параметр SampleInterval не указан, Get-Counter
используется интервал в одну секунду.
Свойства параметра
Тип: | Int32 |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
GetCounterSet
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
String
Get-Counter
Принимает входные данные конвейера для путей счетчиков и имен наборов счетчиков.
Выходные данные
CounterSet
С параметром ListSet этот командлет возвращает объекты CounterSet .
PerformanceCounterSampleSet
По умолчанию и с параметром Счетчика этот командлет возвращает объекты PerformanceCounterSampleSet .
Примечания
Если параметры не указаны, Get-Counter
получает по одному образцу для каждого указанного счетчика производительности. Используйте параметры MaxSamples и Continuous для получения большего количества сэмплов.
Get-Counter
использует интервал в одну секунду между выборками. Используйте параметр SampleInterval для увеличения интервала.
Значения MaxSamples и SampleInterval применяются ко всем счетчикам на каждом компьютере в команде. Чтобы задать разные значения для разных счетчиков, введите отдельные Get-Counter
команды.