Get-Counter

로컬 및 원격 컴퓨터에서 성능 카운터 데이터를 가져옵니다.

Syntax

Get-Counter
   [[-Counter] <String[]>]
   [-SampleInterval <Int32>]
   [-MaxSamples <Int64>]
   [-Continuous]
   [-ComputerName <String[]>]
   [<CommonParameters>]
Get-Counter
   [-ListSet] <String[]>
   [-ComputerName <String[]>]
   [<CommonParameters>]

Description

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

cmdlet은 Get-Counter Windows 운영 체제 제품군의 성능 모니터링 계측에서 직접 성능 카운터 데이터를 가져옵니다. Get-Counter 는 로컬 컴퓨터 또는 원격 컴퓨터에서 성능 데이터를 가져옵니다.

매개 변수를 Get-Counter 사용하여 하나 이상의 컴퓨터를 지정하고, 성능 카운터 집합과 해당 집합에 포함된 인스턴스를 나열하고, 샘플 간격을 설정하고, 최대 샘플 수를 지정할 수 있습니다. 매개 변수가 Get-Counter 없으면 시스템 카운터 집합에 대한 성능 카운터 데이터를 가져옵니다.

많은 카운터 집합은 ACL(액세스 제어 목록)으로 보호됩니다. 모든 카운터 집합을 보려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 엽니다.

이 cmdlet은 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 매개 변수를 사용하여 카운터 집합 목록을 가져옵니다. MachineName 열의 점(.)은 로컬 컴퓨터를 나타냅니다.

예제 2: SampleInterval 및 MaxSamples 지정

이 예제에서는 로컬 컴퓨터의 모든 프로세서에 대한 카운터 데이터를 가져옵니다. 데이터는 세 개의 샘플이 있을 때까지 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-CounterCounter 매개 변수를 사용하여 카운터 경로를 \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-CounterCounter 매개 변수를 사용하여 카운터를 지정합니다 \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 백그라운드 작업으로 명령을 실행합니다. 작업에서 성능 카운터 출력을 보려면 cmdlet을 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-JobScriptBlock 매개 변수를 사용하여 명령을 실행합니다 Get-Counter . Get-CounterCounter 매개 변수를 사용하여 카운터 경로를 \LogicalDisk(_Total)\% Free Space지정합니다. MaxSamples 매개 변수는 카운터 샘플을 1000개 가져오기 위해 지정합니다.

예제 6: 여러 컴퓨터에서 카운터 데이터 가져오기

이 예제에서는 변수를 사용하여 두 컴퓨터에서 성능 카운터 데이터를 가져옵니다.

$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 은 두 컴퓨터를 지정하고 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

cmdlet은 Get-Random 파일에서 50개 임의 Servers.txt 컴퓨터 이름을 선택하는 데 사용합니다Get-Content. 원격 컴퓨터 이름은 변수에 $Servers 저장됩니다. \Processor(*)\% Processor Time 카운터의 경로는 변수에 $Counter 저장됩니다. Get-CounterCounter 매개 변수를 사용하여 변수의 카운터를 $Counter 지정합니다. ComputerName 매개 변수는 변수의 컴퓨터 이름을 $Servers 지정합니다.

예제 8: Path 속성을 사용하여 서식이 지정된 경로 이름 가져오기

이 예제에서는 카운터 집합의 Path 속성을 사용하여 성능 카운터에 대한 형식이 지정된 경로 이름을 찾습니다.

파이프라인은 cmdlet과 함께 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-CounterListSet 매개 변수를 사용하여 메모리 카운터 집합을 지정합니다. 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-CounterListSet 매개 변수를 사용하여 PhysicalDisk 카운터 집합을 지정합니다. PathsWithInstances 속성이 각 경로 인스턴스를 문자열로 반환할 수 있도록 명령은 괄호로 묶습니다.

예제 10: 카운터 집합의 각 카운터에 대한 단일 값 가져오기

이 예제에서는 로컬 컴퓨터의 메모리 카운터 집합에 있는 각 성능 카운터에 대해 단일 값이 반환됩니다.

$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-CounterListSet 매개 변수를 사용하여 메모리 카운터 집합을 지정합니다. 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 는 카운터 값의 샘플 하나를 가져오고 결과를 변수에 $Data 저장합니다. 변수는 $Data CounterSamples 속성을 사용하여 개체의 속성을 가져옵니다. 개체가 파이프라인 아래로 전송됩니다 Format-List. Property 매개 변수는 별표(*) wild카드를 사용하여 모든 속성을 선택합니다.

예제 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-CounterCounter 매개 변수를 사용하여 카운터 \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-CounterCounter 매개 변수를 사용하여 카운터 \Processor(*)\% Processor Time를 지정합니다. 값은 변수에 $Counter 저장됩니다. 저장된 $Counter.CounterSamples 개체는 파이프라인 아래로 전송됩니다. Where-Object 는 스크립트 블록을 사용하여 각 개체 값을 지정된 값 20과 비교합니다. 파이프라인 $_.CookedValue 의 현재 개체에 대한 변수입니다. 20보다 작은 CookedValue가 있는 카운터가 표시됩니다.

예제 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

컴퓨터 이름 하나 또는 원격 컴퓨터 이름의 쉼표로 구분된 배열을 지정합니다. 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

연속이 지정되면 Get-Counter Ctrl+C를 누를 때까지 샘플을 가져옵니다. 샘플은 지정된 각 성능 카운터에 대해 1초마다 가져옵니다. SampleInterval 매개 변수를 사용하여 연속 샘플 간의 간격을 늘입니다.

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

-Counter

하나 이상의 카운터 경로에 대한 경로를 지정합니다. 경로는 쉼표로 구분된 배열, 변수 또는 텍스트 파일의 값으로 입력됩니다. 파이프라인 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

컴퓨터의 성능 카운터 집합을 나열합니다. 별표(*)를 사용하여 모든 카운터 집합을 지정합니다. 하나의 이름 또는 카운터 집합 이름의 쉼표로 구분된 문자열을 입력합니다. 파이프라인 아래로 카운터 집합 이름을 보낼 수 있습니다.

카운터 집합 형식의 카운터 경로를 얻으려면 ListSet 매개 변수를 사용합니다. 각 카운터 집합의 PathsPathsWithInstances 속성에는 문자열로 서식이 지정된 개별 카운터 경로가 포함됩니다.

카운터 경로 문자열을 변수에 저장하거나 파이프라인을 사용하여 문자열을 다른 Get-Counter 명령으로 보낼 수 있습니다.

예를 들어 각 프로세서 카운터 경로를 다음으로 보냅니다.Get-Counter

Get-Counter -ListSet Processor | Get-Counter

참고 항목

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 하지 않으면 지정된 각 카운터에 대해 하나의 샘플만 가져옵니다.

큰 데이터 집합을 수집하려면 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 매개 변수를 사용하여 이 cmdlet은 CounterSet 개체를 반환합니다.

PerformanceCounterSampleSet

기본적으로 Counter 매개 변수를 사용하여 이 cmdlet은 PerformanceCounterSampleSet 개체를 반환합니다.

참고

매개 변수가 지정되지 Get-Counter 않은 경우 지정된 각 성능 카운터에 대해 하나의 샘플을 가져옵니다. MaxSamples 및 연속 매개 변수를 사용하여 더 많은 샘플을 가져옵니다.

Get-Counter 은 샘플 간에 1초 간격을 사용합니다. SampleInterval 매개 변수를 사용하여 간격을 늘입니다.

MaxSamplesSampleInterval 값은 명령의 각 컴퓨터에 있는 모든 카운터에 적용됩니다. 다른 카운터에 대해 다른 값을 설정하려면 별도의 Get-Counter 명령을 입력합니다.

PowerShell 7에서 ListSet 매개 변수 Get-Counter사용하는 경우 카운터 집합의 Description 속성을 검색할 수 없습니다. 설명.로 설정됩니다$null.