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.

Get-Counter Cmdlet 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 Get-Counter parameter untuk menentukan satu atau beberapa komputer, mencantumkan kumpulan 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 melihat semua set penghitung, buka PowerShell dengan opsi Jalankan sebagai administrator .

Cmdlet ini diperkenalkan kembali di PowerShell 7.

Catatan

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

Contoh

Contoh 1: Dapatkan daftar set 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-Countermenggunakan 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-Countermenggunakan parameter Penghitung untuk menentukan jalur penghitung \Processor(_Total)\% Processor Time. Parameter SampleInterval mengatur interval dua detik untuk memeriksa penghitung. MaxSamples menentukan bahwa tiga adalah jumlah maksimum waktu untuk 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-Countermenggunakan parameter Penghitung untuk menentukan penghitung\Processor\% Processor Time. Parameter Berkelanjutan menentukan untuk mendapatkan sampel setiap detik hingga perintah dihentikan dengan CTRL+C.

Contoh 4: Daftar alfabet set penghitung

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-Countermenggunakan parameter ListSet dengan tanda bintang (*) untuk mendapatkan daftar lengkap set penghitung. Objek CounterSet dikirimkan ke alur. Sort-Objectmenggunakan parameter Properti untuk menentukan bahwa objek diurutkan menurut CounterSetName. Objek dikirim ke alur ke Format-Table. Parameter AutoSize menyesuaikan lebar kolom untuk meminimalkan pemotongan.

Titik (.) di kolom MachineName mewakili komputer lokal.

Contoh 5: Menjalankan pekerjaan latar belakang untuk mendapatkan data penghitung

Dalam contoh ini, Start-Job menjalankan Get-Counter perintah sebagai pekerjaan latar belakang di komputer lokal. Untuk melihat output penghitung kinerja dari pekerjaan, gunakan Receive-Job cmdlet .

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-Jobmenggunakan parameter ScriptBlock untuk menjalankan Get-Counter perintah. Get-Countermenggunakan parameter Penghitung untuk menentukan jalur penghitung \LogicalDisk(_Total)\% Free Space. Parameter MaxSamples menentukan untuk mendapatkan 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 alur ke Get-Counter. Penghitung 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 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. Contohnya:

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

Jalur penghitung menyertakan 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

Get-Random Cmdlet menggunakan Get-Content untuk memilih 50 nama komputer acak dari Servers.txt file. Nama komputer jarak jauh disimpan dalam $Servers variabel. Jalur \Processor(*)\% Processor Time penghitung disimpan dalam $Counter variabel. Get-Countermenggunakan parameter Penghitung untuk menentukan penghitung dalam $Counter variabel. Parameter ComputerName menentukan nama komputer dalam $Servers variabel.

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

Contoh ini menggunakan properti Jalur dari kumpulan penghitung untuk menemukan nama jalur yang diformat untuk penghitung kinerja.

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

$_ 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-Countermenggunakan parameter ListSet untuk menentukan set penghitung Memori. Perintah diapit dalam tanda kurung sehingga properti Jalur mengembalikan setiap jalur sebagai string. Objek dikirim ke alur ke Where-Object. Where-Object menggunakan variabel $_ untuk memproses setiap objek dan menggunakan -like operator 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-Countermenggunakan parameter ListSet untuk menentukan kumpulan penghitung PhysicalDisk. Perintah diapit dalam tanda kurung sehingga properti PathsWithInstances mengembalikan setiap instans jalur sebagai string.

Contoh 10: Dapatkan nilai tunggal untuk setiap penghitung dalam set penghitung

Dalam contoh ini, satu nilai dikembalikan untuk setiap penghitung kinerja dalam 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-Countermenggunakan parameter ListSet untuk menentukan set penghitung Memori. Perintah diapit dalam tanda kurung sehingga properti Jalur mengembalikan setiap jalur sebagai string. Jalur disimpan dalam $MemCounters variabel. Get-Countermenggunakan parameter Penghitung untuk menentukan jalur penghitung dalam $MemCounters variabel.

Contoh 11: Menampilkan nilai properti objek

Nilai properti dalam objek PerformanceCounterSample mewakili setiap sampel data. Dalam contoh ini kita menggunakan properti objek CounterSamples 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 $Counter variabel. Get-Counter mendapatkan satu sampel nilai penghitung dan menyimpan hasil dalam $Data variabel. Variabel $Data menggunakan properti CounterSamples untuk mendapatkan properti objek. Objek dikirimkan alur ke Format-List. Parameter Properti menggunakan kartubebas tanda bintang (*) untuk memilih semua properti.

Contoh 12: Nilai array penghitung kinerja

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

Contoh 13: Membandingkan nilai penghitung kinerja

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

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-Countermenggunakan parameter Penghitung untuk menentukan penghitung \Processor(*)\% Processor Time. Nilai disimpan dalam $Counter variabel . Objek yang disimpan di $Counter.CounterSamples dikirim ke alur. Where-Object menggunakan blok skrip untuk membandingkan setiap nilai objek dengan nilai tertentu dari 20. $_.CookedValue adalah variabel untuk objek saat ini dalam alur. Penghitung dengan CookedValue 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-Countermenggunakan parameter Penghitung untuk menentukan penghitung \Process(*)\% Processor Time untuk semua proses di komputer lokal. Hasilnya disimpan di variabel $Procs. Variabel $Procs dengan properti CounterSamples mengirimkan objek PerformanceCounterSample ke bawah alur. Sort-Objectmenggunakan parameter Properti untuk mengurutkan objek menurut CookedValue dalam urutan Menurut. Format-Tablemenggunakan parameter Properti untuk memilih kolom untuk output. Parameter AutoSize menyesuaikan lebar kolom untuk meminimalkan pemotongan.

Parameter

-ComputerName

Menentukan satu nama komputer atau array nama komputer jarak jauh yang dipisahkan 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 powerShell jarak jauh. Anda dapat menggunakan parameter ComputerName meskipun komputer Anda tidak dikonfigurasi untuk menjalankan perintah jarak jauh.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-Counter

Menentukan jalur ke satu atau beberapa jalur penghitung. Jalur adalah input sebagai array yang dipisahkan koma, variabel, atau nilai dari file teks. Anda dapat mengirim string jalur penghitung ke alur ke Get-Counter.

Jalur penghitung menggunakan sintaks berikut:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Contohnya:

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

\Processor(*)\% User Time

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

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

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

-ListSet

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

Untuk mendapatkan jalur penghitung berformat set penghitung, gunakan parameter ListSet . Properti Paths and PathsWithInstances dari setiap set penghitung berisi jalur penghitung individual yang diformat sebagai string.

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

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

Get-Counter -ListSet Processor | Get-Counter

Catatan

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

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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

-SampleInterval

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

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

Input

String[]

Get-Counter menerima input alur 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 penghitung yang berbeda, masukkan perintah terpisah Get-Counter .

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