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 で再導入されました。

Note

パフォーマンス カウンター名はローカライズされています。 次に示す例では、パフォーマンス オブジェクト、カウンター、およびインスタンスの英語名を使用します。 別の言語を使用するシステムでは、名前が異なります。 このコマンドを 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 を指定する

この例では、ローカル コンピューター上のすべてのプロセッサのカウンター データを取得します。 データは、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+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 キー+を押してコマンドが停止するまで、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 パラメーターは、列の幅を調整して切り捨てを最小限に抑えます。

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: 複数のコンピューターからカウンター データを取得する

この例では、変数を使用して、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 して、ファイルから 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: カウンター セット内の各カウンターの 1 つの値を取得する

この例では、ローカル コンピューターのメモリ カウンター セット内の各パフォーマンス カウンターに対して 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 パラメーターを使用してメモリ カウンター セットを指定します。 コマンドはかっこで囲まれているため、 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 変数に格納されます。 CounterSamples プロパティを持つ変数は$Procs、パイプラインの下に PerformanceCounterSample オブジェクトを送信します。 Sort-Objectでは、Property パラメーターを使用して、オブジェクトを CookedValue降順並べ替えます。 Format-Tableでは、Property パラメーターを使用して出力の列を選択します。 AutoSize パラメーターは、列の幅を調整して切り捨てを最小限に抑えます。

パラメーター

-ComputerName

1 つのコンピューター名またはリモート コンピューター名のコンマ区切りの配列を指定します。 NetBIOS 名、IP アドレス、またはコンピューターの完全修飾 doメイン 名を使用します。

ローカル コンピューターからパフォーマンス カウンター データを取得するには、ComputerName パラメーターを除外します。 MachineName 列を含む ListSet などの出力の場合、ドット (.) はローカル コンピューターを示します。

Get-Counter は PowerShell リモート処理に依存しません。 コンピューターがリモート コマンドを 実行するように構成されていない場合でも、ComputerName パラメーターを使用できます。

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Continuous

Continuous を指定するとGet-Counter Ctrl C キー+を押すまでサンプルが取得されます。 サンプルは、指定されたパフォーマンス カウンターごとに 1 秒ごとに取得されます。 SampleInterval パラメーターを使用して、連続するサンプル間の間隔を増やします。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Counter

1 つ以上のカウンター パスへのパスを指定します。 パスは、テキスト ファイルからのコンマ区切りの配列、変数、または値として入力されます。 パイプライン Get-Counterの下にカウンター パス文字列を送信できます。

カウンター パスでは、次の構文を使用します。

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

次に例を示します。

\\Server01\Processor(*)\% User Time

\Processor(*)\% User Time

\\ComputerNameパフォーマンス カウンター パスでは省略可能です。 カウンター パスにコンピューター名が含まれていない場合は、 Get-Counter ローカル コンピューターを使用します。

インスタンス内のアスタリスク (*) は、カウンターのすべてのインスタンスを取得するワイルドカード文字です。

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ListSet

コンピューター上のパフォーマンス カウンター セットを一覧表示します。 アスタリスク (*) を使用して、すべてのカウンター セットを指定します。 1 つの名前またはカウンター セット名のコンマ区切りの文字列を入力します。 カウンター セット名をパイプラインに送信できます。

カウンター セットの書式設定されたカウンター パスを取得するには、ListSet パラメーターを使用します。 各カウンター セットの Paths プロパティと PathsWithInstances プロパティには、文字列として書式設定された個々のカウンター パスが含まれています。

カウンター パス文字列を変数に保存することも、パイプラインを使用して別 Get-Counter のコマンドに文字列を送信することもできます。

たとえば、各 プロセッサ カウンター パスを次に送信します Get-Counter

Get-Counter -ListSet Processor | Get-Counter

Note

PowerShell 7 では、 Get-Counter カウンター セットの Description プロパティを取得できません。 [ 説明] が [ $null.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-MaxSamples

指定された各パフォーマンス カウンターから取得するサンプルの数を指定します。 サンプルの定数ストリームを取得するには、Continuous パラメーターを使用します。

MaxSamples パラメーターが指定されていない場合は、Get-Counter指定されたカウンターごとに 1 つのサンプルのみを取得します。

大規模なデータ セットを収集するには、PowerShell バックグラウンド ジョブとして実行 Get-Counter します。 詳細については、「about_Jobs」を参照してください。

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SampleInterval

指定した各パフォーマンス カウンターのサンプル間の秒数を指定します。 SampleInterval パラメーターが指定されていない場合は、 Get-Counter 1 秒間隔を使用します。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String[]

Get-Counter は、カウンター パスとカウンター セット名のパイプライン入力を受け入れます。

出力

CounterSet

ListSet パラメーターを使用すると、このコマンドレットは CounterSet オブジェクトをします。

PerformanceCounterSampleSet

既定では、Counter パラメーターを使用して、このコマンドレットは PerformanceCounterSampleSet オブジェクトを返します。

メモ

パラメーターが指定されていない場合は、 Get-Counter 指定されたパフォーマンス カウンターごとに 1 つのサンプルを取得します。 MaxSamples パラメーターと Continuous パラメーターを使用して、より多くのサンプルを取得します。

Get-Counter では、サンプル間の 1 秒間隔が使用されます。 間隔を長くするには、 SampleInterval パラメーターを使用します。

MaxSamplesSampleInterval の値は、コマンド内の各コンピューター上のすべてのカウンターに適用されます。 カウンターごとに異なる値を設定するには、個別 Get-Counter のコマンドを入力します。

PowerShell 7 では、ListSet パラメーターを使用する場合、Get-Counterカウンター セットの Description プロパティを取得できません。 [ 説明] が [ $null.