Aracılığıyla paylaş


Get-Counter

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

Sözdizimi

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'i performans sayacı verilerini doğrudan Windows işletim sistemleri ailesindeki performans izleme araçlarından alır. Get-Counter yerel bir bilgisayardan veya uzak bilgisayarlardan performans verilerini alır.

bir veya daha fazla bilgisayar belirtmek, performans sayacı kümelerini ve içerdikleri örnekleri listelemek, örnek aralıklarını ayarlamak ve en fazla örnek sayısını belirtmek için Get-Counter parametrelerini kullanabilirsiniz. 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ştirilmiştir. 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. Yerelleştirilmiş adları görmek için Get-Counter -ListSet komutunu kullanın.

Örnekler

Örnek 1: Sayaç seti listesini al

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

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

Bu örnek, her saniye bir sayaç için sürekli olarak örnek alır. Komutu durdurmak için CTRL+Ctuşlarına 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 \Processor\% Processor Time parametresini kullanır. Sürekli parametresi, komut CTRL+Cile 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 iletilir. Sort-Object, nesnelerin counterSetName göre sıralanacağını belirtmek için Özelliği parametresini kullanır. Nesneler Format-Table'a ulaşmak üzere işlem hattından gönderilir. AutoSize parametresi, kesmeyi en aza indirmek için sütun genişliklerini ayarlar.

. 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 komutu çalıştırır. İşin performans sayacı çıkışını görüntülemek için Receive-Job cmdlet'ini 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-Job bir komutu çalıştırmak için Get-Counter parametresini kullanır. Get-Counter sayaç yolunu belirtmek için \LogicalDisk(_Total)\% Free Space 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 \LogicalDisk(C:)\Disk Reads/sec sayaç yolunu depolar. $DiskReads değişkeni Get-Counterişlem hattına gönderilir. Sayacı ilk konum parametresidir ve $DiskReadsiçinde depolanan yolu kabul eder. ComputerName iki bilgisayarı ve MaxSamples her bilgisayardan 10 örnek almayı 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ının alternatifi bir metin dosyası kullanmaktır. Mesela:

-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, Get-Content dosyasından 50 rastgele bilgisayar adı seçmek için Servers.txt'i kullanır. Uzak bilgisayar adları $Servers değişkeninde depolanır. \Processor(*)\% Processor Time sayacının yolu $Counter değişkeninde depolanır. Get-Counter, değişkenindeki sayaçları belirtmek için $Counter parametresini kullanır. ComputerName parametresi, $Servers değişkenindeki 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 bir alt kümesini bulmak için Where-Object cmdlet'iyle birlikte kullanılır. Sayaç setlerinin sayaç yollarının tam listesini bulmak için şunu yapın: 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 parantez içine alınır, böylece Yollar özelliği her yolu bir dize olarak döndürür. Nesneler Where-Object'a ulaşmak üzere işlem hattından gönderilir. Where-Object her nesneyi işlemek için $_ değişkenini kullanır ve -likedizesinin eşleşmelerini bulmak için *Cache* işlecini kullanır. Yıldız işaretleri (*) herhangi bir karakter için joker olarak kullanılabilir.

Ö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. komut parantez içine alınır, böylece PathsWithInstances özelliği her yol örneğini dize olarak döndürü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 parantez içine alınır, böylece Yollar özelliği her yolu bir dize olarak döndürür. Yollar $MemCounters değişkeninde depolanır. Get-Counter, değişkenindeki sayaç yollarını belirtmek için $MemCounters parametresini 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 $Counter değişkeninde depolanır. Get-Counter sayaç değerlerinin bir örneğini alır ve sonuçları $Data değişkeninde depolar. $Data değişkeni, nesnenin özelliklerini almak için CounterSamples özelliğini kullanır. Nesne Format-Listişlem hattına gönderilir. Özelliği 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 $Counter.CounterSampleskullanın.

$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples[0]

Path                                         InstanceName        CookedValue
----                                         ------------        -----------
\\Computer01\processor(0)\% processor time   0              1.33997091699662

Get-Counter Sayacı parametresini kullanarak \Processor(*)\% Processor Timesayacını belirtir. Değerler $Counter değişkeninde 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. sayaç verilerini belirtilen bir değerle karşılaştırmak için CounterSamples özelliği kullanılır.

Her sayaç örneğini görüntülemek için $Counter.CounterSampleskullanın.

$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ı parametresini kullanarak \Processor(*)\% Processor Timesayacını belirtir. Değerler $Counter değişkeninde depolanır. $Counter.CounterSamples içinde depolanan nesneler işlem hattına gönderilir. Where-Object, her nesne değerini belirtilen 20değeriyle karşı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 CookedValue'ye sahip 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şlemler için sayacını belirtmek üzere \Process(*)\% Processor Time parametresini kullanır. Sonuç $Procs değişkeninde depolanır. $Procs özelliğine sahip değişkeni, PerformanceCounterSample nesnelerini işlem hattından aşağı gönderir. Sort-Object, nesneleri Azalan düzende CookedValue göre sıralamak için Özelliği parametresini kullanır. Format-Table çıktının sütunlarını seçmek için Özelliği parametresini kullanır. AutoSize parametresi, kesmeyi en aza indirmek için sütun genişliklerini ayarlar.

Parametreler

-ComputerName

Bir bilgisayar adı veya virgülle ayrılmış bir dizi uzaktaki bilgisayar adını belirtir. NetBIOS adını, IP adresini veya bilgisayarın tam nitelikli 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 çıktı için, yerel bilgisayarı nokta (.) gösterir.

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

Tür:String[]
Diğer adlar:Cn
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Continuous

Sürekli belirtildiğinde, Get-CounterCTRL+Ctuş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.

Tür:SwitchParameter
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et: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. Get-Counteriçin veri hattının aşağısına karşıt yol dizeleri gönderebilirsiniz.

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

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Mesela:

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

\Processor(*)\% User Time

\\ComputerName, bir performans sayacı yolunda kullanılabilir. Sayaç yolu bilgisayar adını içermiyorsa, Get-Counter yerel bilgisayarı kullanır.

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

Tür:String[]
Position:0
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et: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, tek tek sayaç yollarını dize olarak biçimlendirilmiş şekilde içerir.

Sayaç yolu dizelerini bir değişkene kaydedebilir veya dizeyi başka bir Get-Counter komutuna göndermek için işlem hattını kullanabilirsiniz.

Örneğin, 'ye her bir Get-Counter sayaç yolunu göndermek amacıyla:

Get-Counter -ListSet Processor | Get-Counter

Not

PowerShell 7'de, Get-Counter sayaç kümesinin Açıklama özelliğini geri alamıyor. Açıklama$nullolarak ayarlanır.

Tür:String[]
Position:0
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et:True

-MaxSamples

Belirtilen her performans sayacından alınacak örnek sayısını belirtir. Sabit bir örnek akışı almak için Sürekli 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 Get-Counter PowerShell arka plan işi olarak çalıştırın. Daha fazla bilgi için bkz. about_Jobs.

Tür:Int64
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et: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.

Tür:Int32
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

Girişler

String[]

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

Çıkışlar

CounterSet

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

PerformanceCounterSampleSet

Varsayılan olarak ve Sayacı 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 Sürekli 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, Get-Counter sayaç kümesinin Açıklama özelliğini alamaz. Açıklama$nullolarak ayarlanır.