PowerShell Cmdlet - Get-Counter
 記事記号:[mf1962] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Get-Counter
    
概要
    ローカル コンピューターおよびリモート コンピューターからパフォーマンス カウ
    ンター データを取得します。
    
構文
    Get-Counter [-Counter] <string[]> [-ComputerName <string[]>] [-Continuous] [
    -MaxSamples <Int64>] [-SampleInterval <int>] [<CommonParameters>]
    
    Get-Counter -ListSet <string[]> [-ComputerName <string[]>] [<CommonParameter
    s>]
    
説明
    Get-Counter コマンドレットは、Windows のパフォーマンス モニター インストルメ
    ンテーションから直接リアルタイムのパフォーマンス カウンター データをライブで
    取得します。このコマンドレットを使用して、指定したサンプル間隔でローカル コ
    ンピューターまたはリモート コンピューターからパフォーマンス データを取得でき
    ます。
    
    パラメーターを指定しなかった場合、"Get-Counter" コマンドは、一連のシステム 
    カウンターに関するカウンター データを取得します。
    
    Get-Counter のパラメーターを使用すると、1 つまたは複数のコンピューターを指定
    したり、パフォーマンス カウンター セットとそのセットに含まれているカウンター
    を一覧表示したり、サンプル サイズと間隔を設定したりできます。
    
パラメーター
    -ComputerName <string[]>
        指定されたコンピューターからデータを取得します。コンピューターの NetBIOS 
        名、インターネット プロトコル (IP) アドレス、または完全修飾ドメイン名を
        入力します。既定値はローカル コンピューターです。
        
        注: Get-Counter は、Windows PowerShell リモート処理に依存しません。コン
        ピューターが Windows PowerShell リモート処理用に構成されていない場合でも、
        Get-Counter の ComputerName パラメーターを使用できます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Continuous [<SwitchParameter>]
        ユーザーが Ctrl キーを押しながら C キーを押すまで、サンプルを継続的に取
        得します。既定では、Get-Counter はカウンター サンプルを 1 つだけ取得しま
        す。SampleInterval パラメーターを使用すると、継続的サンプリングの間隔を
        設定できます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Counter <string[]>
        指定されたパフォーマンス カウンターからデータを取得します。1 つ以上のカ
        ウンター パスを入力します。Instance 値にのみワイルドカードを使用できます。
        パイプを使用してカウンター パス文字列を Get-Counter に渡すこともできます。
        
        各カウンター パスの形式は、次のとおりです。
               "[\\<ComputerName>]\<CounterSet>(<Instance>)\<CounterName>"
        
        次にその例を示します。
                "\\Server01\Processor(2)\% User Time"
        
        <ComputerName> 要素は省略可能です。省略すると、Get-Counter は ComputerNa
        me パラメーターの値を使用します。
        
        注: 正しい形式のカウンター パスを取得するには、ListSet パラメーターを使
        用してパフォーマンス カウンター セットを取得します。各パフォーマンス カ
        ウンター セットの Paths プロパティおよび PathsWithInstances プロパティに
        は、個々のカウンター パスが文字列形式で含まれています。カウンター パス文
        字列を変数に保存するか、パイプを使用して文字列を直接別の Get-Counter コ
        マンドに渡すことができます。具体的な方法については、例を参照してください。
        
        必須                         true
        位置                         2
        既定値                       
        パイプライン入力を許可する   true (ByValue)
        ワイルドカード文字を許可する true
        
    -ListSet <string[]>
        コンピューター上の指定されたパフォーマンス カウンター セットを取得します。
        カウンター セットの名前を入力します。ワイルドカードを使用できます。パイ
        プを使用してカウンター セット名を Get-Counter に渡すこともできます。
        
        必須                         true
        位置                         named
        既定値                       
        パイプライン入力を許可する   true (ByValue, ByPropertyName)
        ワイルドカード文字を許可する true
        
    -MaxSamples <Int64>
        各カウンターから取得するサンプルの数を指定します。既定は 1 サンプルです。
        サンプルを継続的に取得する (サンプルの最大サイズを指定しない) には、Cont
        inuous パラメーターを使用します。
        
        非常に大きなデータ セットを収集する場合は、Get-Counter コマンドを Window
        s PowerShell バックグラウンド ジョブとして実行することを検討してください。
        詳細については、「about_Jobs」と「Start-Job」を参照してください。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -SampleInterval <int>
        サンプル間の時間を秒単位で指定します。最小値および既定値は 1 秒です。
        
        必須                         false
        位置                         named
        既定値                       1
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    System.String[]
        パイプを使用してカウンター パスおよびカウンター セット (ListSet) 名を Ge
        t-Counter に渡すことができます。
    
出力
    Microsoft.PowerShell.Commands.GetCounter.CounterSet、Microsoft.PowerShell.Co
    mmands.GetCounter.PerformanceCounterSampleSet、Microsoft.PowerShell.Commands
    .GetCounter.PerformanceCounterSample
        ListSet パラメーターは、Microsoft.PowerShell.Commands.GetCounter.Counter
        Set オブジェクトを取得します。Counter パラメーターは、Microsoft.PowerShe
        ll.Commands.GetCounter.PerformanceCounterSampleSet オブジェクトを取得し
        ます。各カウンター値は、Microsoft.PowerShell.Commands.GetCounter.Perform
        anceCounterSample オブジェクトです。
    
メモ
        通常、パフォーマンス カウンターはアクセス制御リスト (ACL) によって保護さ
        れています。利用可能なすべてのパフォーマンス カウンターを取得するには、[
        管理者として実行] を指定して Windows PowerShell を開きます。
        
        既定では、Get-Counter は 1 秒のサンプル間隔の間に 1 サンプルを取得します。
        この動作を変更するには、MaxSamples パラメーターと Continuous パラメータ
        ーを使用します。
        
        設定した MaxSamples および SampleInterval の値は、そのコマンド内ですべて
        のコンピューター上のすべてのカウンターに適用されます。それぞれのカウンタ
        ーに異なる値を設定するには、各カウンターに個別の Get-Counter コマンドを
        入力します。
        
    -------------------------- 例 1 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上のすべてのカウンター セットを取得し
    ます。
    
    C:\PS> get-counter -ListSet *
    
    多くのカウンター セットはアクセス制御リスト (ACL) によって保護されているため、
    すべてのカウンター セットを確認するには、Get-Counter コマンドを使用する前に、
    [管理者として実行] を指定して Windows PowerShell を開きます。
    
    -------------------------- 例 2 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上にあるすべてのプロセッサの現在の "% 
    Processor Time" 合計値を取得します。値の数が 3 つになるまで、2 秒ごとにデー
    タが収集されます。
    
    C:\PS> get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInte
    rval 2 -MaxSamples 3
    
    -------------------------- 例 3 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上のすべてのカウンター セット名をアル
    ファベット順に並べ替えた一覧を取得します。
    
    C:\PS> get-counter -listset * | sort-object  countersetname | format-table co
    untersetname
    
    -------------------------- 例 4 --------------------------
    
    C:\PS># Get-Counter
    
    
    説明
    -----------
    これらのコマンドは、カウンター セットの Paths プロパティを使用して、パフォー
    マンス カウンターの正しい形式のパス名を検索します。このようなコマンドを使用
    し、正しいカウンター パス名を取得できます。
    
    最初のコマンドは、ローカル コンピューター上の Memory カウンター セットにある
    パフォーマンス カウンターのパス名を取得します。
    
    C:\PS> (get-counter -listset memory).paths
    
    \Memory\Page Faults/sec
    \Memory\Available Bytes
    \Memory\Committed Bytes
    \Memory\Commit Limit
    \Memory\Write Copies/sec
    \Memory\Transition Faults/sec
    \Memory\Cache Faults/sec
    \Memory\Demand Zero Faults/sec
    \Memory\Pages/sec
    \Memory\Pages Input/sec
    ...
    
    2 番目のコマンドは、"cache" を含むパス名を取得します。
    
    C:\PS> (get-counter -listset memory).paths | where {$_ -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
    
    -------------------------- 例 5 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    これらのコマンドは、Server01 および Server02 コンピューターから Disk Reads/s
    ec カウンター データを取得します。
    
    最初のコマンドは、Disk Reads/sec カウンター パスを $diskreads 変数に保存しま
    す。
    
    C:\PS> $diskreads = "\LogicalDisk(C:)\Disk Reads/sec"
    
    2 番目のコマンドは、パイプライン演算子 (|) を使用して、$diskreads 変数に保存
    されているカウンター パスを Get-Counter コマンドレットに送ります。このコマン
    ドは、MaxSamples パラメーターを使用して、出力されるサンプルの数を 10 個に制
    限します。
    
    C:\PS> $diskreads | get-counter -computer Server01, Server02 -maxsamples 10
    
    -------------------------- 例 6 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、PhysicalDisk パフォーマンス カウンターの正しい形式のパス名 (
    インスタンス名を含む) を取得します。
    
    C:\PS> (get-counter -list physicaldisk).pathswithinstances
    
    -------------------------- 例 7 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    これらのコマンドは、エンタープライズ内の無作為に選択した 50 台のコンピュータ
    ー上にある "% DPC Time" パフォーマンス カウンターの値を取得します。
    
    最初のコマンドは、Get-Content コマンドレットを使用して、Servers.txt ファイル
    からエンタープライズ サーバーの一覧を取得します。次に、Get-Random コマンドレ
    ットを使用して、Servers.txt ファイルの内容から無作為に 50 個のサーバー名を選
    択します。結果は $servers 変数に保存されます。
    
    C:\PS> $servers = get-random (get-content servers.txt) -count 50
    
    2 番目のコマンドは、"% DPC Time" コマンドレットのカウンター パスを $counter 
    変数に保存します。カウンター パスでは、各コンピューターのすべてのプロセッサ
    に関するデータを取得するために、インスタンス名にワイルドカード文字が含まれ
    ています。
    
    C:\PS> $counter = "\Processor(*)\% DPC Time"
    
    3 番目のコマンドは、Get-Counter コマンドレットを使用してカウンター値を取得し
    ます。このコマンドは、Counter パラメーターを使用してカウンターを指定し、Comp
    uterName パラメーターを使用して $servers 変数に保存されているコンピューター
    を指定します。
    
    C:\PS> get-counter -Counter $counter -computername $servers
    
    -------------------------- 例 8 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    これらのコマンドは、ローカル コンピューター上の memory カウンター セットにあ
    るすべてのパフォーマンス カウンターに対して単一の値を取得します。
    
    最初のコマンドは、カウンター パスを取得して、$memCounters 変数に保存します。
    
    C:\PS> $memCounters = (get-counter -list memory).paths
    
    2 番目のコマンドは、Get-Counter コマンドレットを使用して、各カウンターのカウ
    ンター データを取得します。また、Counter パラメーターを使用して、$memCounter
    s 変数に保存されているカウンターを指定します。
    
    C:\PS> get-counter -counter $memCounters
    
    -------------------------- 例 9 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    この例では、各データ サンプルを表す PerformanceCounterSample オブジェクトの
    プロパティ値を示します。
    
    最初のコマンドは、カウンター パスを $counter 変数に保存します。
    
    C:\PS> $counter = "\\SERVER01\Process(Idle)\% Processor Time"
    
    2 番目のコマンドは、Get-Counter コマンドレットを使用して、カウンター値のサン
    プルを 1 つ取得します。結果は $data 変数に保存されます。
    
    C:\PS> $data = get-counter $counter
    
    3 番目のコマンドは、Format-List コマンドレットを使用して、サンプル セット オ
    ブジェクトのすべての CounterSamples プロパティを一覧表示します。
    
    C:\PS> $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        : 7/15/2008 6:39:12 PM
    Timestamp100NSec : 128606207528320000
    Status           : 0
    DefaultScale     : 0
    TimeBase         : 10000000
    
    CounterSamples オブジェクトのプロパティを使用して、データの確認、選択、並べ
    替え、およびグループ化を行うことができます。
    
    -------------------------- 例 10 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、Get-Counter コマンドをバックグラウンド ジョブとして実行しま
    す。詳細については、「Start-Job」を参照してください。
    
    C:\PS> $counters = "\LogicalDisk(_Total)\% Free Space"
    
    C:\PS> start-job -scriptblock {get-counter -counter $counters -maxsamples 10
    00)
    
    -------------------------- 例 11 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、Get-Counter および Get-Random コマンドレットを使用して、Serv
    ers.txt ファイルから無作為に選択した 50 台のコンピューター上の空きディスク領
    域の割合を調べます。
    
    C:\PS> get-counter -computername (get-random servers.txt -count 50) -counter 
    "\LogicalDisk(*)\% Free Space"
    
    -------------------------- 例 12 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    この例では、カウンター データとその生成元のコンピューターとを関連付ける方法、
    およびデータを操作する方法を示します。
    
    
    最初のコマンドは、Get-Counter コマンドレットを使用して、S1 および S2 という 
    2 つのリモート コンピューターから "LogicalDisk\% Free Space" カウンター値を
    取得します。結果は $a 変数に保存されます。
    
    $a = get-counter "\LogicalDisk(_Total)\% Free Space" -comp s1, s2
    
    
    
    2 番目のコマンドは $a 変数に保存された結果を表示します。すべてのデータがオブ
    ジェクトに保存されますが、この形式では簡単に確認できません。
    
    C:\PS> $a
    
    Counter Paths: \\s1\\logicaldisk(c:)\% free space, \\s1\\logicaldisk(d:)\% f
    ree space, \\s1\\logicaldisk(_total)\% free space, \\s2\\logicaldisk(c:)\% f
    ree space, \\s2\\logicaldisk(_total)\% free space
    
    Timestamp     : 7/15/2008 5:09:08 PM
    Cooked Values : "0.327058823529412", "17.8952248493278", "12.9994033060778", 
    "75.0754805595626", "75.0754805595626"
    
    3 番目のコマンドは、Get-Counter により返された PerformanceCounterSampleSet 
    オブジェクトの CounterSamples プロパティの値をテーブルとして表示します (オ
    ブジェクトのすべてのプロパティおよびメソッドを表示するには、パイプを使用し
    てその値を Get-Member コマンドレットに渡します)。
    
    C:\PS> $a.countersamples | format-table -auto
    
    Path                                     InstanceName       CookedValue
    ----                                     ------------       -----------
    \\s1\\logicaldisk(c:)\% free space       c:           0.327058823529412
    \\s1\\logicaldisk(d:)\% free space       d:            17.8952248493278
    \\s1\\logicaldisk(_total)\% free space   _total        12.9994033060778
    \\s2\\logicaldisk(c:)\% free space       c:            75.0754805595626
    \\s2\\logicaldisk(_total)\% free space   _total        75.0754805595626
    
    CounterSamples プロパティには、PerformanceCounterSample オブジェクトがそのプ
    ロパティおよびメソッドと共に含まれています。4 番目のコマンドは、配列表記を使
    用して最初のカウンター サンプルを取得し、パイプライン演算子を使用してカウン
    ター サンプル オブジェクトを Format-List コマンドレットに送信します。カウン
    ター サンプルのすべてのプロパティおよびメソッドが一覧表示されます。この方法
    では、各カウンター サンプル オブジェクトに含まれるデータを詳細に表示できます。
    
    5 番目のコマンドは、カウンター サンプルからデータを選択する方法を示していま
    す。このコマンドは、Where-Object コマンドレットを使用して、15 未満の CookedV
    alue を持つカウンター サンプルのみを取得します。
    
    C:\PS> $a.countersamples | where {$_.cookedvalue -lt 15}
    
    Path                                     InstanceName       CookedValue
    ----                                     ------------       -----------
    \\s1\\logicaldisk(c:)\% free space       c:           0.327058823529412
    \\s1\\logicaldisk(_total)\% free space   _total        12.9994033060778
    
    -------------------------- 例 13 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    この例では、取得したパフォーマンス カウンター データを並べ替える方法を示しま
    す。この例では、サンプリング時にプロセッサ時間が最も長いコンピューター上のプ
    ロセスを検索します。
    
    最初のコマンドは、コンピューター上のすべてのプロセスの "Process\% Processor 
    Time" カウンターを取得します。結果は $p 変数に保存されます。
    
    C:\PS> $p = get-counter '\Process(*)\% Processor Time'
    
    2 番目のコマンドは、$p に保存されているサンプル セット オブジェクトの Counte
    rSamples プロパティを取得し、サンプルの処理済みの値 (CookedValue) に基づいて
    サンプルを降順に並べ替えます。このコマンドは、Format-Table コマンドレットと
    その AutoFormat パラメーターを使用し、テーブルの列を配置します。
    
    C:\PS> $p.CounterSamples | sort-object -property CookedValue -Descending | f
    ormat-table -auto
    
    Path                                              InstanceName      CookedValue
    ----                                              ------------      -----------
    \\server01\process(_total)\% processor time        _total        200.00641042078
    \\server01\process(idle)\% processor time          idle          200.00641042078
    \\server01\process(explorer#1)\% processor time    explorer                    0
    \\server01\process(dwm#1)\% processor time         dwm                         0
    \\server01\process(taskeng#1)\% processor time     taskeng                     0
    \\server01\process(taskhost#1)\% processor time    taskhost                    0
    \\server01\process(winlogon)\% processor time      winlogon                    0
    \\server01\process(csrss)\% processor time         csrss                       0
    
    -------------------------- 例 14 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    これらのコマンドは、ワーキング セットが最大であるコンピューター上のプロセス
    を検索します。プロセスをワーキング セットのサイズに基づいて降順に一覧表示し
    ます。
    
    最初のコマンドは、各プロセスの "Process\Working Set - Private" カウンターの
    サンプルを 1 つ取得します。このコマンドは、カウンター データを $ws 変数に保
    存します。
    
    C:\PS> $ws = get-counter "\Process(*)\Working Set - Private"
    
    2 番目のコマンドは、パイプライン演算子 (|) を使用して、$ws 変数の CounterSam
    ples プロパティのデータを Sort-Object コマンドレットに送信し、プロセス デー
    タを CookedValue プロパティの値で降順に並べ替えます。また、別のパイプライン
    を使用して、並べ替えたデータを Format-Table コマンドレットに送信し、Instance
    Name 列および CookedValue 列を持つテーブルの形式でデータを表示します。
    
    C:\PS> $ws.countersamples | sort-object -property cookedvalue -descending | 
    format-table -property InstanceName, CookedValue -auto
    
    InstanceName  CookedValue
    ------------  -----------
    _total          162983936
    svchost          40370176
    powershell       15110144
    explorer         14135296
    svchost          10928128
    svchost           9027584
    ...
    
    -------------------------- 例 15 --------------------------
    
    C:\PS># Get-Counter
    
    説明
    -----------
    このコマンドは、Processor\% Processor Time カウンターの一連のサンプルを既定の 
    1 秒間隔で取得します。コマンドを停止するには、Ctrl キーを押しながら C キーを
    押します。
    
    C:\PS> get-counter -counter "\processor(_total)\% processor time" -continuous
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=138335
    Import-Counter 
    Export-Counter 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Get-Counter
ご利用数: 1862273
感想・要望・問い合わせは こちら