Get-Counter
로컬 및 원격 컴퓨터에서 성능 카운터 데이터를 가져옵니다.
구문
Get-Counter [-Counter] <string[]> [-ComputerName <string[]>] [-Continuous] [-MaxSamples <Int64>] [-SampleInterval <int>] [<CommonParameters>]
Get-Counter -ListSet <string[]> [-ComputerName <string[]>] [<CommonParameters>]
설명
Get-Counter cmdlet은 Windows에 포함된 성능 모니터링 수단을 통해 직접 실시간 라이브 성능 카운터 데이터를 가져옵니다. 이 명령을 사용하면 사용자가 지정하는 샘플 간격에 따라 로컬 또는 원격 컴퓨터에서 성능 데이터를 가져올 수 있습니다.
매개 변수가 없는 경우 "Get-Counter" 명령은 시스템 카운터 집합의 카운터 데이터를 가져옵니다.
Get-Counter의 매개 변수를 사용하여 하나 이상의 컴퓨터를 지정하고, 성능 카운터 집합과 여기에 포함된 카운터를 나열하고, 샘플 크기와 간격을 설정할 수 있습니다.
매개 변수
-ComputerName <string[]>
지정된 컴퓨터에서 데이터를 가져옵니다. 컴퓨터의 NetBIOS 이름, IP(인터넷 프로토콜) 주소 또는 정규화된 도메인 이름을 입력합니다. 기본값은 로컬 컴퓨터입니다.
참고: Get-Counter는 Windows PowerShell 원격에 독립적입니다. Windows PowerShell에서 원격을 사용하도록 컴퓨터가 구성되지 않은 경우에도 Get-Counter의 ComputerName 매개 변수를 사용할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Continuous
Ctrl+C를 누를 때까지 샘플을 계속 가져옵니다. 기본적으로 Get-Counter는 카운터 샘플을 하나만 가져옵니다. SampleInterval 매개 변수를 사용하여 연속 샘플링 간격을 설정할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Counter <string[]>
지정된 성능 카운터에서 데이터를 가져옵니다. 하나 이상의 카운터 경로를 입력합니다. 와일드카드는 Instance 값에서만 허용됩니다. 또한 카운터 경로 문자열을 Get-Counter로 파이프할 수 있습니다.
각 카운터 경로의 형식은 다음과 같습니다.
"[\\<ComputerName>]\<CounterSet>(<Instance>)\<CounterName>"
예를 들면 다음과 같습니다.
"\\Server01\Processor(2)\% User Time"
<ComputerName> 요소는 선택 사항입니다. 이 요소를 생략하면 Get-Counter가 ComputerName 매개 변수의 값을 사용합니다.
참고: 형식이 올바르게 지정된 카운터 경로를 가져오려면 ListSet 매개 변수를 사용하여 성능 카운터 집합을 가져옵니다. 각 성능 카운터 집합의 Paths 및 PathsWithInstances 속성은 문자열로 형식이 지정된 개별 카운터 경로를 포함합니다. 카운터 경로 문자열을 변수에 저장하거나 문자열을 다른 Get-Counter 명령으로 직접 파이프할 수 있습니다. 데모를 보려면 예를 참조하십시오.
필수 여부 |
true |
위치 |
2 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
true |
-ListSet <string[]>
컴퓨터에서 지정된 성능 카운터 집합을 가져옵니다. 카운터 집합의 이름을 입력합니다. 와일드카드를 사용할 수 있습니다. 또한 카운터 집합 이름을 Get-Counter로 파이프할 수 있습니다.
필수 여부 |
true |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue, ByPropertyName) |
와일드카드 문자 적용 여부 |
true |
-MaxSamples <Int64>
각 카운터에서 가져올 샘플 수를 지정합니다. 기본적으로 1개 샘플을 가져옵니다. 샘플을 계속 가져오려면(최대 샘플 크기 없음) Continuous 매개 변수를 사용합니다.
매우 큰 데이터 집합을 수집하려면 Get-Counter 명령을 Windows PowerShell 백그라운드 작업으로 실행해 보십시오. 자세한 내용은 about_Jobs 및 Start-Job을 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-SampleInterval <int>
샘플 사이의 시간(초)을 지정합니다. 최소값 및 기본값은 1초입니다.
필수 여부 |
false |
위치 |
named |
기본값 |
1 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String[] 카운터 경로 및 카운터 집합(ListSet) 이름을 Get-Counter로 파이프할 수 있습니다. |
출력 |
Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample ListSet 매개 변수는 Microsoft.PowerShell.Commands.GetCounter.CounterSet 개체를 가져옵니다. Counter 매개 변수는 Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet 개체를 가져옵니다. 각 카운터 값은 Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample 개체입니다. |
참고
성능 카운터는 ACL(액세스 제어 목록)로 보호되는 경우가 많습니다. 사용 가능한 모든 성능 카운터를 가져오려면 "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 엽니다.
기본적으로 Get-Counter는 1초의 샘플링 간격 동안 샘플 하나를 가져옵니다. 이 동작을 변경하려면 MaxSample 및 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" -SampleInterval 2 -MaxSamples 3
예 3
C:\PS># Get-Counter
설명
-----------
이 명령은 로컬 컴퓨터의 모든 카운터 집합 이름이 사전순으로 정렬된 목록을 가져옵니다.
C:\PS> get-counter -listset * | sort-object countersetname | format-table countersetname
예 4
C:\PS># Get-Counter
설명
-----------
이들 명령은 카운터 집합의 Path 속성을 사용하여 성능 카운터에 대해 형식이 올바르게 지정된 경로 이름을 찾습니다. 이와 같은 명령을 사용하면 올바른 카운터 경로 이름을 가져올 수 있습니다.
첫 번째 명령은 로컬 컴퓨터의 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
...
두 번째 명령은 "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/sec 카운터 데이터를 가져옵니다.
첫 번째 명령은 Disk Reads/sec 카운터 경로를 $diskreads 변수에 저장합니다.
C:\PS> $diskreads = "\LogicalDisk(C:)\Disk Reads/sec"
두 번째 명령은 파이프라인 연산자(|)를 사용하여 $diskreads 변수의 카운터 경로를 Get-Counter cmdlet으로 보냅니다. 이 명령은 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 cmdlet을 사용하여 Servers.txt 파일에서 기업 서버 목록을 가져옵니다. 이 명령은 Get-Random cmdlet을 사용하여 Servers.txt 파일 내용에서 50개의 서버 이름을 임의로 선택합니다. 결과는 $servers 변수에 저장됩니다.
C:\PS> $servers = get-random (get-content servers.txt) -count 50
두 번째 명령은 "% DPC Time" cmdlet에 대한 카운터 경로를 $Counter 변수에 저장합니다. 각 컴퓨터에 있는 모든 프로세서의 데이터를 가져오기 위해 카운터 경로의 인스턴스 이름에 와일드카드 문자가 포함됩니다.
C:\PS> $counter = "\Processor(*)\% DPC Time"
세 번째 명령은 Get-Counter cmdlet을 사용하여 카운터 값을 가져옵니다. 이 명령은 Counter 매개 변수를 사용하여 카운터를 지정하고 ComputerName 매개 변수를 사용하여 $servers 변수에 저장된 컴퓨터를 지정합니다.
C:\PS> get-counter -Counter $counter -computername $servers
예 8
C:\PS># Get-Counter
설명
-----------
이들 명령은 로컬 컴퓨터의 Memory 카운터 집합에 있는 모든 성능 카운터에 대해 단일 값을 가져옵니다.
첫 번째 명령은 카운터 경로를 가져와 $memCounters 변수에 저장합니다.
C:\PS> $memCounters = (get-counter -list memory).paths
두 번째 명령은 Get-Counter cmdlet을 사용하여 각 카운터에 대한 카운터 데이터를 가져오고 Counter 매개 변수를 사용하여 $memCounters에 카운터를 지정합니다.
C:\PS> get-counter -counter $memCounters
예 9
C:\PS># Get-Counter
설명
-----------
이 예에서는 각 데이터 샘플을 나타내는 PerformanceCounterSample 개체의 속성 값을 보여 줍니다.
첫 번째 명령은 카운터 경로를 $counter 변수에 저장합니다.
C:\PS> $counter = "\\SERVER01\Process(Idle)\% Processor Time"
두 번째 명령은 Get-Counter cmdlet을 사용하여 카운터 값의 샘플을 하나 가져와 결과를 $data 변수에 저장합니다.
C:\PS> $data = get-counter $counter
세 번째 명령은 Format-List cmdlet을 사용하여 샘플 집합 개체의 모든 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 1000)
예 11
C:\PS># Get-Counter
설명
-----------
이 명령은 Get-Counter 및 Get-Random cmdlet을 사용하여 Servers.txt 파일에서 임의로 선택한 50개 컴퓨터의 사용 가능한 디스크 공간 비율을 찾습니다.
C:\PS> get-counter -computername (get-random servers.txt -count 50) -counter "\LogicalDisk(*)\% Free Space"
예 12
C:\PS># Get-Counter
설명
-----------
이 예에서는 카운터 데이터를 해당 데이터가 제공된 컴퓨터와 연결하고 데이터를 조작하는 방법을 보여 줍니다.
첫 번째 명령은 Get-Counter cmdlet을 사용하여 두 개의 원격 컴퓨터 S1과 S2에서 "LogicalDisk\% Free Space" 카운터 값을 가져와 결과를 $a 변수에 저장합니다.
$a = get-counter "\LogicalDisk(_Total)\% Free Space" -comp s1, s2
두 번째 명령은 $a 변수에 결과를 표시합니다. 모든 데이터가 개체에 저장되지만 이러한 형식으로 데이터를 보기는 어렵습니다.
C:\PS> $a
Counter Paths: \\s1\\logicaldisk(c:)\% free space, \\s1\\logicaldisk(d:)\% free space, \\s1\\logicaldisk(_total)\% free space, \\s2\\logicaldisk(c:)\% free 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"
세 번째 명령은 Get-Counter가 반환하는 PerformanceCounterSampleSet 개체의 CounterSamples 속성 값을 테이블에 표시합니다. 개체의 모든 속성과 메서드를 보려면 Get-Member cmdlet으로 파이프하십시오.
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 개체가 포함됩니다. 네 번째 명령은 배열 표기법을 사용하여 첫 번째 카운터 샘플과 파이프라인 연산자를 가져와 카운터 샘플 개체를 Format-List cmdlet으로 보냅니다. 그러면 이 cmdlet이 모든 해당 속성과 메서드를 목록에 표시합니다. 이를 통해 각 카운터 샘플 개체에 있는 다양한 데이터를 볼 수 있습니다.
네 번째 명령은 카운터 샘플에서 데이터를 선택하는 방법을 보여 줍니다. 이 명령은 Where-Object cmdlet을 사용하여 CookedValue가 15 미만인 카운터 샘플만 가져옵니다.
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'
두 번째 명령은 $p에 있는 샘플 집합 개체의 CounterSamples 속성을 가져와 샘플의 가공된 값을 기준으로 샘플을 내림차순으로 정렬합니다. 이 명령은 Format-Table cmdlet 및 해당 AutoFormat 매개 변수를 사용하여 테이블에 열을 배치합니다.
C:\PS> $p.CounterSamples | sort-object -property CookedValue -Descending | format-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" 카운터의 샘플을 하나 가져와 카운터 데이터를 $ws 변수에 저장합니다.
C:\PS> $ws = get-counter "\Process(*)\Working Set - Private"
두 번째 명령은 파이프라인 연산자(|)를 사용하여 $ws 변수의 CounterSamples 속성에 있는 데이터를 Sort-Object cmdlet으로 보냅니다. 그러면 이 cmdlet이 CookedValue 속성 값을 기준으로 프로세스 데이터를 내림차순으로 정렬합니다. 다른 파이프라인은 정렬된 데이터를 Format-Table cmdlet으로 보냅니다. 그러면 이 cmdlet이 데이터의 형식을 InstanceName 및 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
설명
-----------
이 명령은 1초 간격(기본값)으로 일련의 Processor\% Processor Time 카운터 샘플을 가져옵니다. 명령을 중지하려면 Ctrl+C를 누릅니다.
C:\PS> get-counter -counter "\processor(_total)\% processor time" -continuous