以下のPowerShellを実行してCSVに取得しています。
<#
.SYNOPSIS
Windows のパフォーマンスカウンター名と説明(ヘルプ文)を一覧化し、CSVに出力します。
.DESCRIPTION
レジストリ HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
配下の Counter / Help (REG_MULTI_SZ) を読み取り、CSV化します。
【重要な仕様1: Help側のIDオフセット】
- Counter配列: [偶数ID, カウンター名, 偶数ID, カウンター名, ...] のペア
- Help配列 : [ID, 説明文, ID, 説明文, ...] のペア
あるカウンター名のID が N の場合、対応する説明文の ID は "N + 1" です。
【重要な仕様2: 言語キーの名前】
Perflibのサブキー名は、4桁の完全LCID(例: 日本語=0411)ではなく
"3桁のプライマリ言語ID" で付けられています。
英語 = 009
日本語 = 011 ← "0411" ではない点に注意
さらに、現在のOSの実行言語のデータを自動的にミラーしている
"CurrentLanguage" という固定名のキーが存在するため、
環境ごとのLCID名を気にせずこちらを既定で使用します。
.PARAMETER OutputPath
出力するCSVファイルのパス(既定: カレントフォルダの PerfCounters.csv)
.PARAMETER Lcid
使用する言語キー名を明示的に指定したい場合に指定(例: "011", "009")。
省略時は "CurrentLanguage" (現在のOS言語) を自動使用します。
.EXAMPLE
.\Export-PerfCounters.ps1 -OutputPath C:\temp\PerfCounters.csv
.EXAMPLE
.\Export-PerfCounters.ps1 -Lcid 009 -OutputPath C:\temp\PerfCounters_EN.csv
#>
[CmdletBinding()]
param(
[string]$OutputPath = ".\PerfCounters.csv",
[string]$Lcid = "CurrentLanguage"
)
$ErrorActionPreference = "Stop"
Write-Host "=== Windows パフォーマンスカウンター一覧 CSV出力 ===" -ForegroundColor Cyan
# ---------------------------------------------------------
# 1. レジストリから Counter / Help の生データを取得
# 既定は CurrentLanguage → 無ければ 011(日本語) → 009(英語) の順にフォールバック
# ---------------------------------------------------------
$candidateKeys = if ($PSBoundParameters.ContainsKey('Lcid')) {
@($Lcid)
} else {
@("CurrentLanguage", "011", "009")
}
$perflibKey = $null
foreach ($candidate in $candidateKeys) {
$testKey = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\$candidate"
if (Test-Path $testKey) {
$perflibKey = $testKey
$Lcid = $candidate
break
}
}