Get-Counter

Yerel ve uzak bilgisayarlardan performans sayacı verilerini alır.

Syntax

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

Description

Bu cmdlet yalnızca Windows platformunda kullanılabilir.

Get-Counter Cmdlet, performans sayacı verilerini doğrudan Windows işletim sistemi ailesindeki performans izleme araçlarından alır. Get-Counter yerel bir bilgisayardan veya uzak bilgisayarlardan performans verilerini alır.

Parametreleri kullanarak Get-Counter bir veya daha fazla bilgisayar belirtebilir, performans sayacı kümelerini ve içerdikleri örnekleri listeleyebilir, örnek aralıklarını ayarlayabilir ve en fazla örnek sayısını belirtebilirsiniz. Parametreler olmadan, Get-Counter bir dizi sistem sayacı için performans sayacı verilerini alır.

Birçok sayaç kümesi erişim denetim listeleri (ACL) tarafından korunur. Tüm sayaç kümelerini görmek için Yönetici olarak çalıştır seçeneğiyle PowerShell'i açın.

Bu cmdlet PowerShell 7'de yeniden tanıtıldı.

Not

Performans sayacı adları yerelleştirilir. Burada gösterilen örneklerde performans nesnelerinin, sayaçların ve örneklerin İngilizce adları kullanılır. Başka bir dil kullanan bir sistemde adlar farklı olacaktır. Get-Counter -ListSet Yerelleştirilmiş adları görmek için komutunu kullanın.

Örnekler

Örnek 1: Sayaç kümesi listesini alma

Bu örnek, yerel bilgisayarın sayaç kümeleri listesini alır.

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 , sayaç kümelerinin listesini almak için ListSet parametresini yıldız işaretiyle (*) kullanır. MachineName sütunundaki nokta (.), yerel bilgisayarı temsil eder.

Örnek 2: SampleInterval ve MaxSamples değerlerini belirtin

Bu örnek, yerel bilgisayardaki tüm işlemciler için sayaç verilerini alır. Veriler üç örnek olana kadar iki saniyelik aralıklarla toplanır.

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-Countercounter yolunu \Processor(_Total)\% Processor Timebelirtmek için Counter parametresini kullanır. SampleInterval parametresi, sayacı denetlemek için iki saniyelik bir aralık ayarlar. MaxSamples , sayacın denetlenebilmesi için en fazla üç sayı olduğunu belirler.

Örnek 3: Sayacın sürekli örneklerini alma

Bu örnekler her saniye bir sayaç için sürekli örnekler alır. Komutu durdurmak için CTRL C tuşuna+basın. Örnekler arasında daha uzun bir aralık belirtmek için SampleInterval parametresini kullanın.

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 sayacını belirtmek için Counter parametresini \Processor\% Processor Time kullanır. Sürekli parametresi, komut CTRL+C ile durdurulana kadar her saniye örneklerin alınmasını belirtir.

Örnek 4: Sayaç kümelerinin alfabetik listesi

Bu örnek, sayaç listesi kümesini almak ve ardından listeyi alfabetik sırada sıralamak için işlem hattını kullanır.

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 , sayaç kümelerinin tam listesini almak için ListSet parametresini yıldız işaretiyle (*) kullanır. CounterSet nesneleri işlem hattına gönderilir. Sort-Object, nesnelerin CounterSetName'e göre sıralandığını belirtmek için Property parametresini kullanır. Nesneler işlem hattına Format-Tablegönderilir. AutoSize parametresi, kesmeyi en aza indirmek için sütun genişliklerini ayarlar.

MachineName sütunundaki nokta (.), yerel bilgisayarı temsil eder.

Örnek 5: Sayaç verilerini almak için arka plan işi çalıştırma

Bu örnekte, Start-Job yerel bilgisayarda arka plan işi olarak bir Get-Counter komut çalıştırır. İşin performans sayacı çıkışını görüntülemek için cmdlet'ini Receive-Job kullanın.

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-Jobkomut Get-Counter çalıştırmak için ScriptBlock parametresini kullanır. Get-Countercounter yolunu \LogicalDisk(_Total)\% Free Spacebelirtmek için Counter parametresini kullanır. MaxSamples parametresi, sayacın 1000 örneğini almayı belirtir.

Örnek 6: Birden çok bilgisayardan sayaç verilerini alma

Bu örnek, iki bilgisayardan performans sayacı verilerini almak için bir değişken kullanır.

$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 değişkeni sayaç yolunu depolar\LogicalDisk(C:)\Disk Reads/sec. $DiskReads değişkeni işlem hattına Get-Countergönderilir. Sayaç , ilk konum parametresidir ve içinde $DiskReadsdepolanan yolu kabul eder. ComputerName iki bilgisayarı belirtir ve MaxSamples her bilgisayardan 10 örnek almak için belirtir.

Örnek 7: Birden çok rastgele bilgisayardan sayacın örnek değerlerini alma

Bu örnek, kuruluştaki 50 rastgele uzak bilgisayarda bir performans sayacının değerini alır. ComputerName parametresi bir değişkende depolanan rastgele bilgisayar adlarını kullanır. Değişkendeki bilgisayar adlarını güncelleştirmek için değişkeni yeniden oluşturun.

ComputerName parametresindeki sunucu adları için alternatif olarak bir metin dosyası kullanabilirsiniz. Örneğin:

-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)

Sayaç yolu, uzak bilgisayarın işlemcilerinin her birine ait verileri almak için örnek adında bir yıldız işareti (*) içerir.

$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, dosyadan Servers.txt 50 rastgele bilgisayar adı seçmek için kullanırGet-Content. Uzak bilgisayar adları değişkeninde $Servers depolanır. Sayacın \Processor(*)\% Processor Time yolu değişkende $Counter depolanır. Get-Counter değişkenindeki sayaçları belirtmek için Counter parametresini $Counter kullanır. ComputerName parametresi değişkendeki $Servers bilgisayar adlarını belirtir.

Örnek 8: Biçimlendirilmiş yol adlarını almak için Path özelliğini kullanma

Bu örnek, performans sayaçlarının biçimlendirilmiş yol adlarını bulmak için bir sayaç kümesinin Path özelliğini kullanır.

İşlem hattı, yol adlarının Where-Object bir alt kümesini bulmak için cmdlet'iyle birlikte kullanılır. Sayaç kümeleri, sayaç yollarının tam listesini bulmak için işlem hattını (|) ve Where-Object komutunu kaldırın.

$_, işlem hattındaki geçerli nesne için otomatik bir değişkendir. Daha fazla bilgi için bkz . 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, Bellek sayaç kümesini belirtmek için ListSet parametresini kullanır. Komut, Paths özelliğinin her yolu dize olarak döndürmesi için parantez içine alınır. Nesneler işlem hattına Where-Objectgönderilir. Where-Object her nesneyi işlemek için değişkenini $_ kullanır ve dizesinin -like*Cache*eşleşmelerini bulmak için işlecini kullanır. Yıldız işaretleri (*), herhangi bir karakter için joker karakterdir.

Örnek 9: Biçimlendirilmiş yol adlarını almak için PathsWithInstances özelliğini kullanma

Bu örnek, PhysicalDisk performans sayaçlarının örneklerini içeren biçimlendirilmiş yol adlarını alır.

(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, PhysicalDisk sayaç kümesini belirtmek için ListSet parametresini kullanır. PathsWithInstances özelliğinin her yol örneğini dize olarak döndürmesi için komut parantez içine alınır.

Örnek 10: Sayaç kümesindeki her sayaç için tek bir değer alma

Bu örnekte, yerel bilgisayarın Bellek sayaç kümesindeki her performans sayacı için tek bir değer döndürülür.

$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, Bellek sayaç kümesini belirtmek için ListSet parametresini kullanır. Komut, Paths özelliğinin her yolu dize olarak döndürmesi için parantez içine alınır. Yollar değişkeninde $MemCounters depolanır. Get-Counter değişkenindeki sayaç yollarını belirtmek için Counter parametresini $MemCounters kullanır.

Örnek 11: Nesnenin özellik değerlerini görüntüleme

PerformanceCounterSample nesnesindeki özellik değerleri her veri örneğini temsil eder. Bu örnekte verileri incelemek, seçmek, sıralamak ve gruplandırmak için CounterSamples nesnesinin özelliklerini kullanacağız.

$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

Sayaç yolu değişkeninde $Counter depolanır. Get-Counter sayaç değerlerinin bir örneğini alır ve sonuçları değişkende $Data depolar. değişkeni, $Data nesnenin özelliklerini almak için CounterSamples özelliğini kullanır. nesnesi işlem hattına Format-Listgönderilir. Property parametresi, tüm özellikleri seçmek için yıldız işareti (*) joker karakteri kullanır.

Örnek 12: Performans sayacı dizi değerleri

Bu örnekte, bir değişken her performans sayacını depolar. CounterSamples özelliği, belirli sayaç değerlerini görüntüleyebilen bir dizidir.

Her sayaç örneğini görüntülemek için kullanın $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 sayacını belirtmek için Counter parametresini \Processor(*)\% Processor Timekullanır. Değerler değişkeninde $Counter depolanır. $Counter.CounterSamples[0] , ilk sayaç değeri için dizi değerini görüntüler.

Örnek 13: Performans sayacı değerlerini karşılaştırma

Bu örnek, yerel bilgisayardaki her işlemci tarafından kullanılan işlemci süresi miktarını bulur. CounterSamples özelliği, sayaç verilerini belirtilen değerle karşılaştırmak için kullanılır.

Her sayaç örneğini görüntülemek için kullanın $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 sayacını belirtmek için Counter parametresini \Processor(*)\% Processor Timekullanır. Değerler değişkeninde $Counter depolanır. içinde $Counter.CounterSamples depolanan nesneler işlem hattına gönderilir. Where-Object her nesne değerini belirtilen değeriyle 20karşılaştırmak için bir betik bloğu kullanır. $_.CookedValue, işlem hattındaki geçerli nesne için bir değişkendir. 20'den küçük bir CookedValue içeren sayaçlar görüntülenir.

Örnek 14: Performans sayacı verilerini sıralama

Bu örnek, performans sayacı verilerinin nasıl sıralanacağını gösterir. Örnek, bilgisayardaki örnek sırasında en fazla işlemci süresini kullanan işlemleri bulur.

$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, yerel bilgisayardaki tüm işlemlerin sayacını \Process(*)\% Processor Time belirtmek için Counter parametresini kullanır. Sonuç değişkeninde $Procs depolanır. CounterSamples özelliğine sahip değişken PerformanceCounterSample nesnelerini işlem hattına gönderir.$Procs Sort-ObjectNesneleri Azalan düzende CookedValue'ya göre sıralamak için Property parametresini kullanır. Format-Table çıktının sütunlarını seçmek için Property parametresini kullanır. AutoSize parametresi, kesmeyi en aza indirmek için sütun genişliklerini ayarlar.

Parametreler

-ComputerName

Bir bilgisayar adını veya uzak bilgisayar adlarının virgülle ayrılmış dizisini belirtir. NetBIOS adını, IP adresini veya bilgisayarın tam etki alanı adını kullanın.

Yerel bilgisayardan performans sayacı verilerini almak için ComputerName parametresini hariç tutun. MachineName sütununu içeren ListSet gibi bir çıkış için, yerel bilgisayarı bir nokta (.) gösterir.

Get-Counter PowerShell uzaktan iletişimini etkilemez. Bilgisayarınız uzak komutları çalıştıracak şekilde yapılandırılmamış olsa bile ComputerName parametresini kullanabilirsiniz.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Continuous

Sürekli belirtildiğinde, Get-Counter CTRL+C tuşuna basana kadar örnekler alır. Belirtilen her performans sayacı için her saniye örnekler alınır. Sürekli örnekler arasındaki aralığı artırmak için SampleInterval parametresini kullanın.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Counter

Bir veya daha fazla sayaç yolunun yolunu belirtir. Yollar, bir metin dosyasından virgülle ayrılmış bir dizi, değişken veya değer olarak girilir. İşlem hattının Get-Counteraşağısına sayaç yolu dizeleri gönderebilirsiniz.

Sayaç yolları aşağıdaki söz dizimini kullanır:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Örneğin:

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

\Processor(*)\% User Time

\\ComputerName bir performans sayacı yolunda isteğe bağlıdır. Sayaç yolu bilgisayar adını içermiyorsa yerel Get-Counter bilgisayarı kullanır.

Örnekteki yıldız işareti (*), sayacın tüm örneklerini almak için bir joker karakterdir.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ListSet

Bilgisayarlardaki performans sayacı kümelerini listeler. Tüm sayaç kümelerini belirtmek için yıldız işareti (*) kullanın. Bir ad veya virgülle ayrılmış bir sayaç kümesi adı dizesi girin. İşlem hattında sayaç kümesi adları gönderebilirsiniz.

Sayaç kümeleri biçimlendirilmiş sayaç yollarını almak için ListSet parametresini kullanın. Her sayaç kümesinin Paths ve PathsWithInstances özellikleri, dize olarak biçimlendirilmiş tek tek sayaç yollarını içerir.

Sayaç yolu dizelerini bir değişkene kaydedebilir veya işlem hattını kullanarak dizeyi başka bir Get-Counter komuta gönderebilirsiniz.

Örneğin, her İşlemci sayacı yolunu adresine göndermek için Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Not

PowerShell 7'de sayaç Get-Counter kümesinin Description özelliği alınamıyor. Açıklama olarak $nullayarlanır.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-MaxSamples

Belirtilen her performans sayacından alınacak örnek sayısını belirtir. Sürekli bir örnek akışı almak için Continuous parametresini kullanın.

MaxSamples parametresi belirtilmezse, Get-Counter belirtilen her sayaç için yalnızca bir örnek alır.

Büyük bir veri kümesi toplamak için PowerShell arka plan işi olarak çalıştırın Get-Counter . Daha fazla bilgi için bkz. İşler hakkında.

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SampleInterval

Belirtilen her performans sayacı için örnekler arasındaki saniye sayısını belirtir. SampleInterval parametresi belirtilmezse, Get-Counter bir saniyelik bir aralık kullanır.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

String[]

Get-Counter sayaç yolları ve sayaç kümesi adları için işlem hattı girişini kabul eder.

Çıkışlar

CounterSet

ListSet parametresiyle, bu cmdlet CounterSet nesnelerini döndürür.

PerformanceCounterSampleSet

Varsayılan olarak ve Counter parametresiyle bu cmdlet PerformanceCounterSampleSet nesnelerini döndürür.

Notlar

Parametre belirtilmezse, Get-Counter belirtilen her performans sayacı için bir örnek alır. Daha fazla örnek almak için MaxSamples ve Continuous parametrelerini kullanın.

Get-Counter örnekler arasında bir saniyelik bir aralık kullanır. Aralığı artırmak için SampleInterval parametresini kullanın.

MaxSamples ve SampleInterval değerleri, komuttaki her bilgisayardaki tüm sayaçlara uygulanır. Farklı sayaçlar için farklı değerler ayarlamak için ayrı Get-Counter komutlar girin.

PowerShell 7'de ListSet parametresi kullanılırken sayaç Get-Counter kümesinin Description özelliği alınamıyor. Açıklama olarak $nullayarlanır.