다음을 통해 공유


Get-Counter

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

구문

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

Description

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

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

예제 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-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 카운터를 지정합니다. 연속 매개 변수는 명령이 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 별표()와 함께 * 매개 변수를 사용하여 카운터 집합의 전체 목록을 가져옵니다. CounterSet 개체는 파이프라인 아래로 전송됩니다. Sort-Object Property 매개 변수를 사용하여 개체가 CounterSetName따라 정렬되도록 지정합니다. 개체는 파이프라인을 따라 Format-Table로 전송됩니다. AutoSize 매개변수는 열 너비를 조정하여 잘림을 최소화합니다.

. 열의 점()은 로컬 컴퓨터를 나타냅니다.

예제 5: 백그라운드 작업을 실행하여 카운터 데이터 가져오기

이 예제에서 Start-Job 로컬 컴퓨터에서 백그라운드 작업으로 Get-Counter 명령을 실행합니다. 작업에서 성능 카운터 출력을 보려면 Receive-Job cmdlet을 사용합니다.

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: 여러 컴퓨터에서 카운터 데이터 가져오기

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

$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

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

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

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

파이프라인은 Where-Object cmdlet과 함께 경로 이름의 하위 집합을 찾는 데 사용됩니다. 카운터 집합의 카운터 경로 전체 목록을 찾으려면 파이프라인(|) 및 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: 카운터 집합의 각 카운터에 대한 단일 값 가져오기

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

$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 카운터 값의 샘플을 하나 가져오고 결과를 $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 파이프라인의 현재 개체에 대한 변수입니다. 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 변수에 저장됩니다. $Procs 속성이 있는 변수는 PerformanceCounterSample 개체를 파이프라인 아래로 보냅니다. Sort-Object Property 매개 변수를 사용하여 내림차순으로 CookedValue 개체를 정렬합니다. Format-Table 속성 매개 변수를 사용하여 출력에 대한 열을 선택합니다. AutoSize 매개변수는 열 너비를 조정하여 잘림을 최소화합니다.

매개 변수

-ComputerName

컴퓨터 이름 하나 또는 쉼표로 구분된 원격 컴퓨터 이름을 지정합니다. NetBIOS 이름, IP 주소 또는 컴퓨터의 정규화된 도메인 이름을 사용합니다.

로컬 컴퓨터에서 성능 카운터 데이터를 얻으려면 ComputerName 매개 변수를 제외합니다. MachineName 열을 포함하는 ListSet 같은 출력의 경우 점(.)은 로컬 컴퓨터를 나타냅니다.

Get-Counter은 PowerShell 원격 기술에 의존하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 ComputerName 매개 변수를 사용할 수 있습니다.

형식:String[]
별칭:Cn
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Continuous

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

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Counter

하나 이상의 카운터 경로에 대한 경로를 지정합니다. 경로는 쉼표로 구분된 배열, 변수 또는 텍스트 파일의 값으로 입력됩니다. 카운터 경로 문자열을 Get-Counter로 파이프라인을 통해 보낼 수 있습니다.

카운터 경로는 다음 구문을 사용합니다.

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

예를 들어:

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

\Processor(*)\% User Time

\\ComputerName 성능 카운터 경로에서 선택 사항입니다. 카운터 경로에 컴퓨터 이름이 포함되어 있지 않으면 Get-Counter 로컬 컴퓨터를 사용합니다.

인스턴스의 별표(*)는 카운터의 모든 인스턴스를 가져오는 와일드카드 문자입니다.

형식:String[]
Position:0
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:True

-ListSet

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

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

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

예를 들어 모든 프로세서의 카운터 경로를 Get-Counter로 전송합니다.

Get-Counter -ListSet Processor | Get-Counter

메모

PowerShell 7에서 Get-Counter 카운터 집합의 Description 속성을 검색할 수 없습니다. 설명$null.

형식:String[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:True

-MaxSamples

지정된 각 성능 카운터에서 가져올 샘플 수를 지정합니다. 샘플의 상수 스트림을 얻으려면 Continuous 매개 변수를 사용합니다.

MaxSamples 매개 변수가 지정되지 않은 경우 Get-Counter 지정된 각 카운터에 대해 하나의 샘플만 가져옵니다.

큰 데이터 집합을 수집하려면 Get-Counter PowerShell 백그라운드 작업으로 실행합니다. 자세한 내용은 about_Jobs참조하십시오.

형식:Int64
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-SampleInterval

지정된 각 성능 카운터에 대한 샘플 사이의 시간(초)을 지정합니다. SampleInterval 매개 변수를 지정하지 않으면 Get-Counter 1초 간격을 사용합니다.

형식:Int32
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

String[]

Get-Counter 카운터 경로 및 카운터 집합 이름에 대한 파이프라인 입력을 허용합니다.

출력

CounterSet

ListSet 매개 변수를 사용하면 이 cmdlet은 CounterSet 개체를 반환합니다.

PerformanceCounterSampleSet

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

참고

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

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

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

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