Get-Counter
ローカル コンピューターとリモート コンピューターからパフォーマンス カウンター データを取得します。
構文
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Get-Counter
コマンドレットは、オペレーティング システムの Windows ファミリのパフォーマンス監視インストルメンテーションからパフォーマンス カウンター データを直接取得します。
Get-Counter
は、ローカル コンピューターまたはリモート コンピューターからパフォーマンス データを取得します。
Get-Counter
パラメーターを使用すると、1 つ以上のコンピューターを指定したり、パフォーマンス カウンター セットとそのインスタンスを一覧表示したり、サンプル間隔を設定したり、サンプルの最大数を指定したりできます。 パラメーターがない場合、Get-Counter
はシステム カウンターのセットのパフォーマンス カウンター データを取得します。
多くのカウンター セットは、アクセス制御リスト (ACL) によって保護されています。 すべてのカウンター セットを表示するには、[管理者として実行] オプションを使用して PowerShell を開きます。
このコマンドレットは、PowerShell 7 で再導入されました。
手記
パフォーマンス カウンター名はローカライズされています。 次に示す例では、パフォーマンス オブジェクト、カウンター、およびインスタンスの英語名を使用します。 別の言語を使用するシステムでは、名前が異なります。
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 パラメーターとアスタリスク (*
) を使用して、カウンター セットの一覧を取得します。
.
列のドット () は、ローカル コンピューターを表します。
例 2: SampleInterval と MaxSamples を指定する
この例では、ローカル コンピューター上のすべてのプロセッサのカウンター データを取得します。 データは、3 つのサンプルが存在するまで 2 秒間隔で収集されます。
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 パラメーターは、カウンターをチェックする 2 秒間隔を設定します。
MaxSamples では、カウンターをチェックする最大回数が 3 回であると判断されます。
例 3: カウンターの連続サンプルを取得する
この例では、1 秒ごとにカウンターの連続サンプルを取得します。 コマンドを停止するには、Ctrl +押します。 サンプル間の間隔を長くするには、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 +で停止するまで、1 秒ごとにサンプル取得するように指定します。
例 4: カウンター セットのアルファベット順の一覧
この例では、パイプラインを使用してカウンター リスト セットを取得し、一覧をアルファベット順に並べ替えます。
Get-Counter -ListSet * |
Sort-Object -Property CounterSetName |
Format-Table CounterSetName, CounterSetType -AutoSize
CounterSetName CounterSetType
-------------- --------------
.NET CLR Data SingleInstance
.NET Data Provider for SqlServer SingleInstance
AppV Client Streamed Data Percentage SingleInstance
Authorization Manager Applications SingleInstance
BitLocker MultiInstance
Bluetooth Device SingleInstance
Cache SingleInstance
Client Side Caching SingleInstance
Get-Counter
では、ListSet パラメーターとアスタリスク (*
) を使用して、カウンター セットの完全な一覧を取得します。
CounterSet オブジェクトがパイプラインに送信されます。
Sort-Object
では、Property パラメーターを使用して、オブジェクトが CounterSetNameによって並べ替えられるように指定します。 オブジェクトはパイプラインを通ってFormat-Table
に送られます。
AutoSize パラメーターは、切り捨てを最小限に抑えるために列の幅を調整します。
.
列のドット () は、ローカル コンピューターを表します。
例 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: 複数のコンピューターからカウンター データを取得する
この例では、変数を使用して、2 台のコンピューターからパフォーマンス カウンター データを取得します。
$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 は 2 台のコンピューターを指定し、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
を使用して、Servers.txt
ファイルから 50 個のランダムなコンピューター名を選択します。 リモート コンピューター名は、$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 パラメーターを使用して、Memory カウンター セットを指定します。 コマンドはかっこで囲まれているため、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: カウンター セット内の各カウンターの 1 つの値を取得する
この例では、ローカル コンピューターの Memory カウンター セット内のパフォーマンス カウンターごとに 1 つの値が返されます。
$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 パラメーターを使用して、Memory カウンター セットを指定します。 コマンドはかっこで囲まれているため、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
カウンター値の 1 つのサンプルを取得し、結果を $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
プロパティを持つ 変数は、PerformanceCounterSample オブジェクトをパイプラインの下に送信します。
Sort-Object
では、Property パラメーターを使用して、オブジェクトを降順 に CookedValue を並べ替えます。
Format-Table
では、Property パラメーターを使用して、出力の列を選択します。
AutoSize パラメーターは、切り捨てを最小限に抑えるために列の幅を調整します。
パラメーター
-ComputerName
1 つのコンピューター名またはリモートコンピューター名のコンマ区切り配列 を指定します。 NetBIOS 名、IP アドレス、またはコンピューターの完全修飾ドメイン名を使用します。
ローカル コンピューターからパフォーマンス カウンター データを取得するには、ComputerName パラメーターを除外します。
MachineName 列を含む ListSet などの出力の場合、ドット (.
) はローカル コンピューターを示します。
Get-Counter
は PowerShell リモート処理に依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、ComputerName パラメーターを使用できます。
型: | String[] |
Aliases: | Cn |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Continuous
Continuous を指定すると、Get-Counter
CTRL+Cを押すまでサンプルを取得します。 サンプルは、指定されたパフォーマンス カウンターごとに 1 秒ごとに取得されます。
SampleInterval パラメーターを使用して、連続するサンプル間の間隔を増やします。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Counter
1 つ以上のカウンター パスへのパスを指定します。 パスは、テキスト ファイルからのコンマ区切りの配列、変数、または値として入力されます。 あなたはカウンターパス文字列をパイプラインを通してGet-Counter
に送信できます。
カウンター パスでは、次の構文を使用します。
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
例えば:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
\\ComputerName
は、パフォーマンス カウンター パスでは省略可能です。 カウンター パスにコンピューター名が含まれていない場合、Get-Counter
はローカル コンピューターを使用します。
インスタンス内のアスタリスク (*
) は、カウンターのすべてのインスタンスを取得するためのワイルドカード文字です。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-ListSet
コンピューター上のパフォーマンス カウンター セットを一覧表示します。 すべてのカウンター セットを指定するには、アスタリスク (*
) を使用します。 1つの名前またはカウンターセット名をコンマで区切った文字列を入力してください。 カウンター セット名をパイプラインに送信できます。
フォーマット済みのカウンターパスを取得するには、ListSet パラメーターを使用します。 各カウンター セットの Paths および PathsWithInstances プロパティには、文字列として書式設定された個々のカウンター パスが含まれています。
カウンター パス文字列を変数に保存することも、パイプラインを使用して別の Get-Counter
コマンドに文字列を送信することもできます。
たとえば、各 プロセッサ カウンター パスを Get-Counter
に送信するには、
Get-Counter -ListSet Processor | Get-Counter
手記
PowerShell 7 では、Get-Counter
はカウンター セットの Description プロパティを取得できません。
説明 は $null
に設定されています。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-MaxSamples
指定された各パフォーマンス カウンターから取得するサンプルの数を指定します。 サンプルの定数ストリームを取得するには、Continuous パラメーターを使用します。
MaxSamples パラメーターが指定されていない場合、Get-Counter
は指定されたカウンターごとに 1 つのサンプルのみを取得します。
大規模なデータ セットを収集するには、powerShell バックグラウンド ジョブとして Get-Counter
を実行します。 詳細については、about_Jobsを参照してください。
型: | Int64 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SampleInterval
指定した各パフォーマンス カウンターのサンプル間の秒数を指定します。
SampleInterval パラメーターが指定されていない場合、Get-Counter
は 1 秒間隔を使用します。
型: | Int32 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
String[]
Get-Counter
は、カウンター パスとカウンター セット名のパイプライン入力を受け入れます。
出力
ListSet パラメーターを使用すると、このコマンドレットは CounterSet オブジェクトを返します。
既定では、Counter パラメーターを使用して、このコマンドレットは PerformanceCounterSampleSet オブジェクト 返します。
メモ
パラメーターが指定されていない場合、Get-Counter
は、指定されたパフォーマンス カウンターごとに 1 つのサンプルを取得します。
MaxSamples および Continuous パラメーターを使用して、より多くのサンプルを取得します。
Get-Counter
では、サンプル間で 1 秒間隔が使用されます。 間隔を長くするには、SampleInterval パラメーターを使用します。
MaxSamples と SampleInterval の値は、コマンド内の各コンピューター上のすべてのカウンターに適用されます。 カウンターごとに異なる値を設定するには、個別の Get-Counter
コマンドを入力します。
PowerShell 7 では、ListSet パラメーターを使用する場合、Get-Counter
はカウンター セットの Description プロパティを取得できません。
説明 は $null
に設定されています。
関連リンク
PowerShell