-
-
Save skokhanovskiy/61566322cb57b7c6a30b8a15179dcf25 to your computer and use it in GitHub Desktop.
function New-PerfomanceCounterHash | |
{ | |
[CmdletBinding()] | |
param | |
( | |
[Parameter()] | |
[Switch] $NotLocalized | |
) | |
$KeyName = 'Counter' | |
$RegistryPathLeafLocalMapping = @{ | |
$true = '009' | |
$false = 'CurrentLanguage' | |
} | |
$RegistryPath = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib' | |
$RegistryPath = Join-Path -Path $RegistryPath -ChildPath $RegistryPathLeafLocalMapping[$NotLocalized.IsPresent] | |
$CounterLines = Get-ItemProperty -Path $RegistryPath -Name $KeyName | Select-Object -ExpandProperty $KeyName | |
$Count = $CounterLines.Count | |
$Hash = @{} | |
for ($I = 0; $I -lt $Count - 1; $I += 2) | |
{ | |
$Name = $CounterLines[$I + 1] | |
$Id = [Int] $CounterLines[$I] | |
if (-not $Hash.ContainsKey($Name)) | |
{ | |
$Hash.Add($Name, [System.Collections.ArrayList] @($Id)) | |
} | |
else | |
{ | |
[Void] $Hash[$Name].Add($Id) | |
} | |
$Hash.Add($Id, $Name) | |
} | |
return $Hash | |
} |
Name
New-PerfomanceCounterHash
Synopsis
Creates a hash table to convert Windows performance counter names to integer IDs and vice versa.
Syntax
New-PerfomanceCounterHash [-NotLocalized] [<CommonParameters>]
Description
The New-PerfamanceCounterHash function creates a hash table for converting names of the Windows performance counters to integer identifiers and vice versa. The resulting table contains two types of keys:
- String keys to get the counter identifier by its name;
- Integer keys to get the conter name its identifier.
Value of the string keys is an array of identifiers (System.Collections.ArrayList), because different identifiers may correspond to the same counter name.
The resulting hash table can be used to obtain identifiers that can be used in Zabbix items. The result of the function can also be used to translate the performance counter names from English to the current Windows language locale.
Parameters
NotLocalized
Enables using non-localized performance counter names.
Examples
Example 1
$Hash = New-PerfomanceCounterHash
$Hash['Pages/sec']
Show the list of IDs of the "Pages/sec" performance counter.
Example 2
$Hash = New-PerfomanceCounterHash
$Hash[4]
Show the localized name of the performance counter with ID 4.
Example 3
$Hash = New-PerfomanceCounterHash -NotLocalized
$Hash[238]
Show the nonlocalized name of the performance counter with ID 238.
Example 4
$Local = New-PerfomanceCounterHash
$NotLocal = New-PerfomanceCounterHash -NotLocalized
$Local[$NotLocal['Memory'][0]]
Show the localized name of the performance counter "Memory".
Example 5
$Local = New-PerfomanceCounterHash
$NotLocal = New-PerfomanceCounterHash -NotLocalized
$NotLocal[$Local['Память'][0]]
Show the nonlocalized name of the performance counter "Память".
Example 6
$Local = New-PerfomanceCounterHash
$NotLocal = New-PerfomanceCounterHash -NotLocalized
$CounterName = '\Memory\Demand Zero Faults/sec'
'\{0}\{1}' -f ($Local[$NotLocal[($CounterName -split '\\')[-2]][0]], $Local[$NotLocal[($CounterName -split '\\')[-1]][0]])
Show the localized full name of the performance counter "\Memory\Demand Zero Faults/sec". For example, for the Russian locale the result will be "\Память\Ошибок запроса обнуления/с".
Name
New-PerfomanceCounterHash
Synopsis
Создает хеш-таблицу для преобразования имен счетчиков производительности Windows в целочисленные идентификаторы и наоборот.
Syntax
Description
Функция New-PerfomanceCounterHash создает хеш-таблицу для преобразования имен счетчиков производительности Windows в целочисленные идентификаторы и наоборот. Результирующая таблица содержит в себе два вида ключей:
Строковые ключи в качестве значения хранят массив идентификаторов (System.Collections.ArrayList), т.к. одному и тому же имени счетчика могут соответствовать разные идентификаторы.
Результирующая хеш-таблица может быть использована для получения идентификаторов, которые можно использовать в элементах данных Zabbix. Результат функции также можно использовать для перевода имен счетчиков производительности с английского языка на тот язык, который используется в вашей версии Windows.
Parameters
NotLocalized
Включает построение таблицы с использованием не локализованных имен счетчиков производительности.
Examples
Example 1
Выведет список идентификаторов для счетчика производительности "Pages/sec".
Example 2
Выведет имя счетчика производительности с идентификатором 4 с учетом языка, используемого в системе Windows.
Example 3
Выведет имя счетчика производительности с идентификатором 238 на английском языке, т.е. без учета языка, используемого в системе Windows.
Example 4
Выведет имя счетчика производительности "Memory" с учетом языка, используемого в системе Windows.
Example 5
Выведет имя счетчика производительности "Память" на английском языке, т.е. без учета языка, используемого в системе Windows.
Example 6
Выведет полное имя счетчика производительности "\Memory\Demand Zero Faults/sec" с учетом языка, используемого в системе Windows. Например, для русского языка результат будет "\Память\Ошибок запроса обнуления/с".