次の方法で共有


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-CounterCTRL+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 は、カウンター パスとカウンター セット名のパイプライン入力を受け入れます。

出力

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に設定されています。