Get-Counter
로컬 및 원격 컴퓨터에서 성능 카운터 데이터를 가져옵니다.
Syntax
Get-Counter
[[-Counter] <string[]>]
[-SampleInterval <int>]
[-MaxSamples <long>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Description
cmdlet은 Get-Counter
Windows 운영 체제 제품군의 성능 모니터링 계측에서 직접 성능 카운터 데이터를 가져옵니다. Get-Counter
는 로컬 컴퓨터 또는 원격 컴퓨터에서 성능 데이터를 가져옵니다.
매개 변수를 Get-Counter
사용하여 하나 이상의 컴퓨터를 지정하고, 성능 카운터 집합 및 포함된 인스턴스를 나열하고, 샘플 간격을 설정하고, 최대 샘플 수를 지정할 수 있습니다. 매개 변수가 Get-Counter
없으면 시스템 카운터 집합에 대한 성능 카운터 데이터를 가져옵니다.
많은 카운터 집합은 ACL(액세스 제어 목록)으로 보호됩니다. 모든 카운터 집합을 보려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 엽니다.
예제
예제 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-Counter
는 Counter 매개 변수를 사용하여 카운터 경로를 \Processor(_Total)\% Processor Time
지정합니다. SampleInterval 매개 변수는 카운터를 검사 2초 간격을 설정합니다. MaxSamples는 세 가지가 카운터를 검사 최대 횟수임을 확인합니다.
예제 3: 카운터의 연속 샘플 가져오기
이 예제에서는 1초마다 카운터에 대한 연속 샘플을 가져옵니다. 명령을 중지하려면 CTRLC를 누릅니다. 샘플 간에 더 긴 간격을 지정하려면 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
.
Continuous 매개 변수는 Ctrl+C를 사용하여 명령이 중지될 때까지 1초마다 샘플을 가져오기 위해 를 지정합니다.
예제 4: 카운터 집합의 사전순 목록
이 예제에서는 파이프라인을 사용하여 카운터 목록을 설정한 다음 목록을 사전순으로 정렬합니다.
Get-Counter -ListSet * | Sort-Object -Property CounterSetName | Format-Table -AutoSize
CounterSetName MachineName CounterSetType Description
-------------- ----------- -------------- -----------
.NET CLR Data . SingleInstance .Net CLR Data
.NET Data Provider for SqlServer . SingleInstance Counters for System.Data.SqlClient
AppV Client Streamed Data Percentage . SingleInstance Size of data streamed to disk ...
Authorization Manager Applications . SingleInstance The set of Counters for ...
BitLocker . MultiInstance BitLocker Drive Encryption ...
Bluetooth Device . SingleInstance Counters related to a remote ...
Cache . SingleInstance The Cache performance object ...
Client Side Caching . SingleInstance Performance counters for SMB ...
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-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: 여러 임의 컴퓨터에서 카운터의 instance 값 가져오기
이 예제에서는 엔터프라이즈의 임의 원격 컴퓨터 50대에서 성능 카운터의 값을 가져옵니다. ComputerName 매개 변수는 변수에 저장된 임의의 컴퓨터 이름을 사용합니다. 변수의 컴퓨터 이름을 업데이트하려면 변수를 다시 만듭니다.
ComputerName 매개 변수의 서버 이름에 대한 대안은 텍스트 파일을 사용하는 것입니다. 예를 들면 다음과 같습니다.
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
카운터 경로에는 instance 이름에 별표(*
)가 포함되어 각 원격 컴퓨터의 프로세서에 대한 데이터를 가져옵니다.
$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
를 사용하여 Get-Content
Servers.txt 파일에서 50개 임의 컴퓨터 이름을 선택합니다. 원격 컴퓨터 이름은 변수에 $Servers
저장됩니다. \Processor(*)\% Processor Time
카운터의 경로는 변수에 $Counter
저장됩니다. Get-Counter
는 Counter 매개 변수를 사용하여 변수에 카운터를 $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-Counter
는 ListSet 매개 변수를 사용하여 메모리 카운터 집합을 지정합니다. 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 속성이 문자열로 instance 각 경로를 반환할 수 있도록 명령은 괄호로 묶입니다.
예제 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 매개 변수를 사용하여 메모리 카운터 집합을 지정합니다. 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
변수에 저장됩니다. CounterSamples 속성이 있는 변수는 $Procs
PerformanceCounterSample 개체를 파이프라인 아래로 보냅니다. Sort-Object
에서는 Property 매개 변수를 사용하여 내림차순으로 CookedValue로 개체를 정렬합니다. Format-Table
에서는 Property 매개 변수를 사용하여 출력에 대한 열을 선택합니다. AutoSize 매개 변수는 잘림을 최소화하기 위해 열 너비를 조정합니다.
매개 변수
-ComputerName
컴퓨터 이름 하나 또는 원격 컴퓨터 이름의 쉼표로 구분된 배열을 지정합니다. NetBIOS 이름, IP 주소 또는 컴퓨터의 정규화된 도메인 이름을 사용합니다.
로컬 컴퓨터에서 성능 카운터 데이터를 얻으려면 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
Continuous를 지정하면 Get-Counter
Ctrl+C를 누를 때까지 샘플을 가져옵니다. 샘플은 지정된 각 성능 카운터에 대해 매초마다 가져옵니다. 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
포함되지 않은 경우 는 로컬 컴퓨터를 사용합니다.
instance 별표(*
)는 카운터의 모든 인스턴스를 가져오는 와일드카드 문자입니다.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-ListSet
컴퓨터에서 성능 카운터 집합을 Lists. 별표(*
)를 사용하여 모든 카운터 집합을 지정합니다. 하나의 이름 또는 카운터 집합 이름의 쉼표로 구분된 문자열을 입력합니다. 파이프라인 아래로 카운터 집합 이름을 보낼 수 있습니다.
카운터 집합 형식의 카운터 경로를 얻으려면 ListSet 매개 변수를 사용합니다. 각 카운터 집합 의 Paths 및 PathsWithInstances 속성에는 문자열 형식의 개별 카운터 경로가 포함됩니다.
카운터 경로 문자열을 변수에 저장하거나 파이프라인을 사용하여 문자열을 다른 Get-Counter
명령으로 보낼 수 있습니다.
예를 들어 각 프로세서 카운터 경로를 로 보냅니다 Get-Counter
.
Get-Counter -ListSet Processor | Get-Counter
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: | Long |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SampleInterval
지정된 각 성능 카운터에 대한 샘플 사이의 시간(초)을 지정합니다. SampleInterval 매개 변수가 지정되지 않은 경우 는 Get-Counter
1초 간격을 사용합니다.
Type: | Int |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
입력
String[]
Get-Counter
카운터 경로 및 카운터 집합 이름에 대한 파이프라인 입력을 허용합니다.
출력
Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample
개체의 속성을 보려면 파이프라인 아래로 출력을 로 Get-Member
보냅니다. 출력되는 개체 형식은 다음과 같습니다.
ListSet 매개 변수: Microsoft.PowerShell.Commands.GetCounter.CounterSet
카운터 매개 변수: Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet
CounterSamples 속성: Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample
참고
매개 변수가 지정되지 Get-Counter
않은 경우 지정된 각 성능 카운터에 대해 하나의 샘플을 가져옵니다. MaxSamples 및 연속 매개 변수를 사용하여 더 많은 샘플을 가져옵니다.
Get-Counter
는 샘플 간에 1초 간격을 사용합니다. SampleInterval 매개 변수를 사용하여 간격을 늘입니다.
MaxSamples 및 SampleInterval 값은 명령의 각 컴퓨터에서 모든 카운터에 적용됩니다. 다른 카운터에 대해 다른 값을 설정하려면 별도의 Get-Counter
명령을 입력합니다.