다음을 통해 공유


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-JobScriptBlock 매개 변수를 사용하여 명령을 실행합니다 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-ContentServers.txt 파일에서 50개 임의 컴퓨터 이름을 선택합니다. 원격 컴퓨터 이름은 변수에 $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 속성이 문자열로 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-CounterListSet 매개 변수를 사용하여 메모리 카운터 집합을 지정합니다. Paths 속성이 각 경로를 문자열로 반환할 수 있도록 명령은 괄호로 묶입니다. 경로는 변수에 $MemCounters 저장됩니다. Get-CounterCounter 매개 변수를 사용하여 변수의 $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 저장합니다. 변수는 $DataCounterSamples 속성을 사용하여 개체의 속성을 가져옵니다. 개체는 파이프라인 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 속성이 있는 변수는 $ProcsPerformanceCounterSample 개체를 파이프라인 아래로 보냅니다. 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-CounterCtrl+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 매개 변수를 사용합니다. 각 카운터 집합 의 PathsPathsWithInstances 속성에는 문자열 형식의 개별 카운터 경로가 포함됩니다.

카운터 경로 문자열을 변수에 저장하거나 파이프라인을 사용하여 문자열을 다른 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 매개 변수를 사용하여 간격을 늘입니다.

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