Bagikan melalui


Get-Counter

Mendapatkan data penghitung kinerja dari komputer lokal dan jarak jauh.

Sintaks

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

Deskripsi

Cmdlet ini hanya tersedia di platform Windows.

cmdlet Get-Counter mendapatkan data penghitung kinerja langsung dari instrumentasi pemantauan performa dalam keluarga sistem operasi Windows. Get-Counter mendapatkan data performa dari komputer lokal atau komputer jarak jauh.

Anda dapat menggunakan parameter Get-Counter untuk menentukan satu atau beberapa komputer, mencantumkan set penghitung kinerja dan instans yang dikandungnya, mengatur interval sampel, dan menentukan jumlah maksimum sampel. Tanpa parameter, Get-Counter mendapatkan data penghitung kinerja untuk sekumpulan penghitung sistem.

Banyak set penghitung dilindungi oleh daftar kontrol akses (ACL). Untuk menampilkan semua set penghitung, buka PowerShell dengan opsi Jalankan sebagai administrator.

Cmdlet ini diperkenalkan kembali di PowerShell 7.

Nota

Nama penghitung kinerja dilokalkan. Contoh yang diperlihatkan di sini menggunakan nama-nama dalam bahasa Inggris untuk objek kinerja, penghitung, dan instans. Nama akan berbeda pada sistem yang menggunakan bahasa lain. Gunakan perintah Get-Counter -ListSet untuk melihat nama yang dilokalkan.

Contoh

Contoh 1: Dapatkan daftar kumpulan penghitung

Contoh ini mendapatkan daftar set penghitung komputer lokal.

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 menggunakan parameter ListSet dengan tanda bintang (*) untuk mendapatkan daftar set penghitung. Titik (.) di kolom MachineName mewakili komputer lokal.

Contoh 2: Tentukan SampleInterval dan MaxSamples

Contoh ini mendapatkan data penghitung untuk semua prosesor di komputer lokal. Data dikumpulkan pada interval dua detik hingga ada tiga sampel.

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 menggunakan parameter Penghitung untuk menentukan jalur penghitung \Processor(_Total)\% Processor Time. Parameter SampleInterval menetapkan interval dua detik untuk memeriksa penghitung. MaxSamples menentukan bahwa tiga adalah jumlah maksimum berapa kali memeriksa penghitung.

Contoh 3: Mendapatkan sampel berkelanjutan dari penghitung

Contoh ini mendapatkan sampel berkelanjutan untuk penghitung setiap detik. Untuk menghentikan perintah, tekan CTRL+C. Untuk menentukan interval yang lebih panjang antara sampel, gunakan parameter 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 menggunakan parameter Penghitung untuk menentukan penghitung \Processor\% Processor Time. Parameter Berkelanjutan menentukan untuk mendapatkan sampel setiap detik sampai perintah dihentikan dengan CTRL+C.

Contoh 4: Daftar himpunan penghitung secara alfabetis

Contoh ini menggunakan alur untuk mendapatkan kumpulan daftar penghitung lalu mengurutkan daftar dalam urutan alfabet.

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 menggunakan parameter ListSet dengan asterisk (*) untuk mendapatkan daftar set penghitung yang lengkap. Objek CounterSet dikirimkan ke dalam jalur proses. Sort-Object menggunakan parameter Properti untuk menentukan bahwa objek diurutkan menurut CounterSetName. Objek dikirimkan melalui saluran ke Format-Table. Parameter AutoSize menyesuaikan lebar kolom untuk meminimalkan pemotongan.

Titik (.) di kolom MachineName mewakili komputer lokal.

Contoh 5: Menjalankan tugas latar belakang untuk mendapatkan data penghitung

Dalam contoh ini, Start-Job menjalankan perintah Get-Counter sebagai pekerjaan latar belakang di komputer lokal. Untuk melihat output penghitung kinerja dari pekerjaan, gunakan 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 menggunakan parameter ScriptBlock untuk menjalankan perintah Get-Counter. Get-Counter menggunakan parameter Penghitung untuk menentukan jalur penghitung \LogicalDisk(_Total)\% Free Space. Parameter MaxSamples menentukan pengambilan 1000 sampel penghitung.

Contoh 6: Mendapatkan data penghitung dari beberapa komputer

Contoh ini menggunakan variabel untuk mendapatkan data penghitung kinerja dari dua komputer.

$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

Variabel $DiskReads menyimpan jalur penghitung \LogicalDisk(C:)\Disk Reads/sec. Variabel $DiskReads dikirim ke bawah alur ke Get-Counter. Counter adalah parameter posisi pertama dan menerima jalur yang disimpan di $DiskReads. ComputerName menentukan dua komputer dan MaxSamples menentukan untuk mendapatkan 10 sampel dari setiap komputer.

Contoh 7: Mendapatkan nilai instans penghitung dari beberapa komputer yang dipilih secara acak

Contoh ini mendapatkan nilai penghitung kinerja pada 50 komputer jarak jauh acak di perusahaan. Parameter ComputerName menggunakan nama komputer acak yang disimpan dalam variabel. Untuk memperbarui nama komputer dalam variabel, buat ulang variabel.

Alternatif untuk nama server dalam parameter ComputerName adalah menggunakan file teks. Misalnya:

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

Jalur penghitung mencakup tanda bintang (*) dalam nama instans untuk mendapatkan data untuk setiap prosesor komputer jarak jauh.

$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 menggunakan Get-Content untuk memilih 50 nama komputer acak dari file Servers.txt. Nama komputer jarak jauh disimpan dalam variabel $Servers. Jalur penghitung \Processor(*)\% Processor Time disimpan dalam variabel $Counter. Get-Counter menggunakan parameter Penghitung untuk menentukan penghitung dalam variabel $Counter. Parameter ComputerName menentukan nama komputer dalam variabel $Servers.

Contoh 8: Gunakan properti Jalur untuk mendapatkan nama jalur yang diformat

Contoh ini menggunakan properti Jalur dari set penghitung untuk mencari nama jalur yang telah diformat untuk penghitung kinerja.

Alur digunakan dengan cmdlet Where-Object untuk menemukan subset nama jalur. Untuk menemukan set penghitung daftar lengkap jalur penghitung, hapus alur (|) dan perintah Where-Object.

$_ adalah variabel otomatis untuk objek saat ini dalam alur. Untuk informasi selengkapnya, lihat 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 menggunakan parameter ListSet untuk menentukan penghitung Memori. Perintah diapit dalam tanda kurung sehingga properti Jalur mengembalikan setiap jalur sebagai string. Objek dikirimkan melalui saluran ke Where-Object. Where-Object menggunakan variabel $_ untuk memproses setiap objek dan menggunakan operator -like untuk menemukan kecocokan untuk string *Cache*. Tanda bintang (*) adalah kartubebas untuk karakter apa pun.

Contoh 9: Gunakan properti PathsWithInstances untuk mendapatkan nama jalur yang diformat

Contoh ini mendapatkan nama jalur berformat yang menyertakan instans untuk penghitung kinerja 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 menggunakan parameter ListSet untuk menentukan kumpulan penghitung PhysicalDisk. Perintah diapit dalam tanda kurung sehingga properti PathsWithInstances mengembalikan setiap instans jalur sebagai string.

Contoh 10: Dapatkan satu nilai untuk setiap penghitung dalam kelompok penghitung

Dalam contoh ini, satu nilai dikembalikan untuk setiap penghitung kinerja di set penghitung Memori komputer lokal.

$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 menggunakan parameter ListSet untuk menentukan penghitung Memori. Perintah diapit dalam tanda kurung sehingga properti Jalur mengembalikan setiap jalur sebagai string. Jalur disimpan dalam variabel $MemCounters. Get-Counter menggunakan parameter Penghitung untuk menentukan jalur penghitung dalam variabel $MemCounters.

Contoh 11: Menampilkan nilai properti objek

Nilai properti dalam objek PerformanceCounterSample mewakili setiap sampel data. Dalam contoh ini kita menggunakan properti CounterSamples objek untuk memeriksa, memilih, mengurutkan, dan mengelompokkan data.

$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

Jalur penghitung disimpan dalam variabel $Counter. Get-Counter mendapatkan satu sampel nilai penghitung dan menyimpan hasilnya dalam variabel $Data. Variabel $Data menggunakan properti CounterSamples untuk mendapatkan properti objek. Objek dikirim melalui alur ke Format-List. Parameter Properti menggunakan karakter pengganti tanda bintang (*) untuk memilih semua properti.

Contoh 12: Nilai array penghitung performa

Dalam contoh ini, variabel menyimpan setiap penghitung kinerja. Properti CounterSamples adalah array yang dapat menampilkan nilai penghitung tertentu.

Untuk menampilkan setiap sampel penghitung, gunakan $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 menggunakan parameter Penghitung untuk menentukan penghitung \Processor(*)\% Processor Time. Nilai disimpan dalam variabel $Counter. $Counter.CounterSamples[0] menampilkan nilai array untuk nilai penghitung pertama.

Contoh 13: Bandingkan nilai metrik kinerja

Contoh ini menemukan jumlah waktu prosesor yang digunakan oleh setiap prosesor di komputer lokal. Properti CounterSamples digunakan untuk membandingkan data penghitung terhadap nilai yang ditentukan.

Untuk menampilkan setiap sampel penghitung, gunakan $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 menggunakan parameter Penghitung untuk menentukan penghitung \Processor(*)\% Processor Time. Nilai disimpan dalam variabel $Counter. Objek yang disimpan di $Counter.CounterSamples disalurkan ke dalam jalur pemrosesan. Where-Object menggunakan blok skrip untuk membandingkan setiap nilai objek dengan nilai 20tertentu. $_.CookedValue adalah variabel untuk objek saat ini dalam pipeline. Penghitung dengan nilai dimasak yang kurang dari 20 ditampilkan.

Contoh 14: Mengurutkan data penghitung kinerja

Contoh ini menunjukkan cara mengurutkan data penghitung kinerja. Contoh menemukan proses di komputer yang menggunakan waktu prosesor terbanyak selama sampel.

$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 menggunakan parameter Penghitung untuk menentukan penghitung \Process(*)\% Processor Time untuk semua proses di komputer lokal. Hasilnya disimpan dalam variabel $Procs. Variabel $Procs dengan properti CounterSamples mengirimkan objek PerformanceCounterSample ke dalam pipeline. Sort-Object menggunakan parameter Properti untuk mengurutkan objek menurut CookedValue dalam urutan turun. Format-Table menggunakan parameter Properti untuk memilih kolom untuk output. Parameter AutoSize menyesuaikan lebar kolom untuk meminimalkan pemotongan.

Parameter

-ComputerName

Mengacu pada satu nama komputer atau array nama komputer jarak jauh yang dipisahkan dengan koma. Gunakan nama NetBIOS, alamat IP, atau nama domain komputer yang sepenuhnya memenuhi syarat.

Untuk mendapatkan data penghitung kinerja dari komputer lokal, kecualikan parameter ComputerName. Untuk output seperti ListSet yang berisi kolom MachineName, titik (.) menunjukkan komputer lokal.

Get-Counter tidak mengandalkan pengereman PowerShell jarak jauh. Anda dapat menggunakan parameter ComputerName meskipun komputer Anda tidak dikonfigurasi untuk menjalankan perintah jarak jauh.

Jenis:String[]
Alias:Cn
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Continuous

Saat Berkelanjutan ditentukan, Get-Counter mendapatkan sampel hingga Anda menekan CTRL+C. Sampel diperoleh setiap detik untuk setiap penghitung kinerja yang ditentukan. Gunakan parameter SampleInterval untuk meningkatkan interval antara sampel berkelanjutan.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Counter

Menentukan jalur ke satu atau lebih jalur penghitung. Jalur dapat berupa array dengan elemen yang dipisahkan oleh koma, variabel, atau nilai dari file teks. Anda dapat mengirim string jalur penghitung ke alur Get-Counter.

Jalur penghitung menggunakan sintaks berikut:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Misalnya:

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

\Processor(*)\% User Time

\\ComputerName bersifat opsional dalam jalur penghitung kinerja. Jika jalur penghitung tidak menyertakan nama komputer, Get-Counter menggunakan komputer lokal.

Tanda bintang (*) dalam instans adalah karakter wildcard untuk mendapatkan semua instans dari penghitung.

Jenis:String[]
Position:0
Nilai default:None
Diperlukan:False
Terima input alur:True
Terima karakter wildcard:True

-ListSet

Mencantumkan set penghitung kinerja pada komputer. Gunakan tanda bintang (*) untuk menentukan semua kumpulan penghitung. Masukkan satu nama atau string nama kumpulan penghitung yang dipisahkan koma. Anda dapat mengirim nama set penghitung ke pipeline.

Untuk mendapatkan jalur berformat penghitung set, gunakan parameter ListSet. Jalur dan Jalur DenganInstansi dari properti setiap set penghitung berisi jalur penghitung individu yang diformat sebagai string.

Anda dapat menyimpan string jalur penghitung dalam variabel atau menggunakan alur untuk mengirim string ke perintah Get-Counter lain.

Misalnya untuk mengirim setiap jalur penghitung Prosesor ke Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Nota

Di PowerShell 7, Get-Counter tidak dapat mengambil properti Deskripsi dari kumpulan penghitung. Deskripsi diatur ke $null.

Jenis:String[]
Position:0
Nilai default:None
Diperlukan:True
Terima input alur:True
Terima karakter wildcard:True

-MaxSamples

Menentukan jumlah sampel yang akan didapatkan dari setiap penghitung kinerja yang ditentukan. Untuk mendapatkan aliran sampel yang konstan, gunakan parameter Berkelanjutan.

Jika parameter MaxSamples tidak ditentukan, Get-Counter hanya mendapatkan satu sampel untuk setiap penghitung yang ditentukan.

Untuk mengumpulkan himpunan data besar, jalankan Get-Counter sebagai pekerjaan latar belakang PowerShell. Untuk informasi selengkapnya, lihat about_Jobs.

Jenis:Int64
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-SampleInterval

Menentukan jumlah detik di antara setiap sampel untuk setiap penghitung kinerja yang ditentukan. Jika parameter SampleInterval tidak ditentukan, Get-Counter menggunakan interval satu detik.

Jenis:Int32
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

Input

String[]

Get-Counter menerima input pipeline untuk jalur penghitung dan nama set penghitung.

Output

CounterSet

Dengan parameter ListSet, cmdlet ini mengembalikan objek CounterSet.

PerformanceCounterSampleSet

Secara default dan dengan parameter Penghitung, cmdlet ini mengembalikan objek PerformanceCounterSampleSet.

Catatan

Jika tidak ada parameter yang ditentukan, Get-Counter mendapatkan satu sampel untuk setiap penghitung kinerja yang ditentukan. Gunakan parameter MaxSamples dan Continuous untuk mendapatkan lebih banyak sampel.

Get-Counter menggunakan interval satu detik antar sampel. Gunakan parameter SampleInterval untuk meningkatkan interval.

Nilai MaxSamples dan SampleInterval berlaku untuk semua penghitung pada setiap komputer dalam perintah. Untuk mengatur nilai yang berbeda untuk masing-masing penghitung, masukkan perintah Get-Counter secara terpisah.

Di PowerShell 7, saat menggunakan parameter ListSet, Get-Counter tidak dapat mengambil kembali properti Description dari kumpulan penghitung. Deskripsi diatur ke $null.