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

구문

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






참고 항목




목차