Поделиться через


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 команды.