PowerShell'de Bellek Kullanım Yüzdesini Alma [3 Yol]
Bellek kullanım yüzdelerini almak için birden fazla kullanım durumumuz olabilir. Örneğin:
- Genel bellek kullanım yüzdesini alma
- Genel bellek kullanım yüzdesi geçmişini alma
- Bir/tüm işlemler için bellek kullanım yüzdesini alma
Bunları birer birer öğrenelim.
Overcall Belleği Kullanım Yüzdesi
Genel bellek kullanım yüzdesini almak için Get-Counter ve Get-WmiObject cmdlet'lerini kullanabiliriz. Bunları aşağıda ayrıntılı olarak inceleyelim.
Get-Counter Cmdlet'ini kullanın
Toplam bellek kullanımını yüzde cinsinden öğrenmek için Get-Counter cmdlet'ini kullanın.
Get-Counter Cmdlet'ini kullanın:
$performance_counter = Get-Counter '\Memory\% Committed Bytes In Use'
$usedMemoryPercentage = $performance_counter.CounterSamples[0].CookedValue
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"ÇIKTI:
Used Memory Percentage: 57.7237514214878%Sistemde kullanılan bellek baytlarının yüzdesine ilişkin performans sayacını almak için Get-Counter cmdlet'ini kullandık ve bunu $Performance_counter değişkeninde sakladık. '\Memory\% Kullanımdaki Kaydedilen Bayt Sayısı' sayaç yolu, kullanılabilir toplam fiziksel belleğe kıyasla taahhüt edilen bellek baytlarının oranını ölçen bellek sayacını belirtti.
Daha sonra performans sayacının değerini $Performance_counter'dan aldık ve bunu $usedMemoryPercentage değişkenine atadık. Peki performans sayacının değerini nasıl elde ettik? Bunun için, bir dizi performans sayacı örneği içeren $Performance_counter değişkeninin CounterSamples özelliğini kullandık.
İlk sayaç örneğini almayı amaçladığımız için ona erişmek için [0] kullandık. Daha sonra sayaç örneğinin CookedValue özelliğini kullanarak mesaj kullanım yüzdesini elde ettik. Son olarak PowerShell konsolunda görüntülemek için Write-Host'u kullandık.
Get-WmiObject Cmdlet'ini kullanın
PowerShell sürüm 3.0 veya önceki bir sürümünü kullanıyorsanız bellek kullanım yüzdesini almak için Get-WmiObject cmdlet'ini kullanın.
Get-WmiObject cmdlet'ini kullanın:
$usedMemory = Get-WmiObject -Class Win32_OperatingSystem
$totalMemory = $usedMemory.TotalVisibleMemorySize
$freeMemory = $usedMemory.FreePhysicalMemory
$usedMemoryPercentage = ($totalMemory - $freeMemory) / $totalMemory * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"ÇIKTI:
Used Memory Percentage: 54.8795984097428%İşletim sistemiyle ilgili ayrıntılara ulaşmak için Get-WmiObject cmdlet'ini, özellikle de -Class parametresini kullanarak belirttiğimiz Win32_OperatingSystem'i kullandık. Alınan ayrıntıları $usedMemory değişkeninde sakladık.
Daha sonra, görünür bellek boyutunu ve boş fiziksel belleği elde etmek için sırasıyla $usedMemory değişkeninin TotalVisibleMemorySize ve FreePhysicalMemory özelliklerini kullandık. Bunları $totalMemory ve $freeMemory adlı iki ayrı değişkende sakladık.
Daha sonra, $freeMemory miktarını $totalMemory'den çıkararak ve çıktıyı $totalMemory, ardından bunu 100 ile çarpıyoruz. Son olarak, hesaplanan bu yüzdeyi $usedMemoryPercentage değişkeninde sakladık ve bunu ayrıca PowerShell konsolunda yazdırmak için Write-Host cmdlet'iyle birlikte kullandık.
PowerShell sürüm 3.0 veya üzerini kullanıyorsanız Get-CimInstance cmdlet'ini kullanmayı tercih edin çünkü PowerShell 3.0'dan bu yana Get-WmiObject'in yerini Get-CimInstance almıştır. güçlü>
Get-CimInstance cmdlet'ini kullanın:
$usedMemory = Get-CimInstance -Class Win32_OperatingSystem
$totalMemory = $usedMemory.TotalVisibleMemorySize
$freeMemory = $usedMemory.FreePhysicalMemory
$usedMemoryPercentage = ($totalMemory - $freeMemory) / $totalMemory * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"ÇIKTI:
Used Memory Percentage: 54.8795984097428%Şu ana kadar genel bellek kullanım yüzdesini nasıl elde edeceğimizi öğrendik; Peki ya makinenizdeki mevcut işlem tarafından yalnızca ne kadar bellek yüzdesinin tüketildiğini bilmek istiyorsanız? Bunu nasıl yapabileceğimize bakalım.
Overcall Belleği Kullanım Yüzdesi Geçmişi
Genel bellek kullanım yüzdesi geçmişini almak için Get-Counter cmdlet'ini kullanın.
Get-Counter Cmdlet'ini kullanın:
Get-Counter '\Memory\% Committed Bytes In Use' -Continuous -SampleInterval 5ÇIKTI:
Timestamp CounterSamples
--------- --------------
7/15/2023 11:38:12 AM \\desktop-nkk10jm\memory\% committed bytes in use :
57.3812244593588
7/15/2023 11:38:17 AM \\desktop-nkk10jm\memory\% committed bytes in use :
57.3770478035736
7/15/2023 11:38:22 AM \\desktop-nkk10jm\memory\% committed bytes in use :
57.3751683014853
7/15/2023 11:38:27 AM \\desktop-nkk10jm\memory\% committed bytes in use :
57.3706575337263İlk örnek kodda Get-Counter cmdlet'ini ve sayaç yolunu zaten öğrenmiştik. Burada, 5< örnek aralığıyla, kullanımdaki taahhütlü bellek baytlarının yüzdesine ilişkin performans sayacı verilerini almak için parametresi kullanıldı.-SampleInterval parametresini 5 olarak ayarladık. /code> saniye. Ancak kullanıcı bunu durdurmak için klavyeden Ctrl+C tuşuna basana kadar verileri sürekli güncellemek için -Continous
Bir/Daha Fazla İşlem için Bellek Kullanım Yüzdesi
Bir işlemin veya tüm işlemlerin bellek kullanım yüzdesini bulmak için Get-Process ve Get-WmiObject cmdlet'lerini kullanabiliriz.
Get-Process Cmdlet'ini kullanın
Yerel makinedeki geçerli işlemin bellek kullanım yüzdesini almak için Get-Process cmdlet'ini kullanın.
Get-Process Cmdlet'i kullanın:
$current_process = Get-Process -Id $PID
$usedMemoryPercentage = ($current_process.WorkingSet / (Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory) * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"ÇIKTI:
Used Memory Percentage: 0.918036721468859%Mevcut süreç hakkında bilgi almak için Get-Process cmdlet'ini -Id parametresiyle kullandık. Geçerli PowerShell işleminin işlem kimliğini (diğer adıyla PID) içeren $PID değişkenini kullanarak geçerli işlemi belirttik.
-Id'i $PID ile ayarlayarak, $current_process değişkenine atadığımız mevcut PowerShell oturumuna ilişkin işlem ayrıntılarını elde ettik.
Daha sonra bellek kullanım yüzdesini hesapladık ve bunu konsolda görüntülemek için Write-Host ile kullanılan $usedMemoryPercentage değişkenine atadık. Peki bellek kullanım yüzdesini nasıl hesapladık?
Bunun için $current_process nesnesinin WorkingSet özelliğini (işlemin kullandığı bellek miktarını içeriyordu) TotalPhysicalMemory özelliğine böldük. Win32_ComputerSystem WMI sınıfının (bilgisayarda yüklü toplam fiziksel bellek miktarını içeren) ve ardından sonucun 100 ile çarpılması.
Bu şekilde yukarıdaki kod, mevcut işlemin işlem nesnesini aldı, bu işlemin bellek kullanım yüzdesini hesapladı ve ardından çıktıyı PowerShell konsolunda görüntüledi.
Get-WmiObject Cmdlet'ini kullanın
Yerel makinedeki tüm işlemlere ilişkin bellek kullanım yüzdesini almak için Get-WmiObject cmdlet'ini kullanın.
Get-WmiObject Cmdlet'ini kullanın:
Get-WmiObject -Class Win32_PerfFormattedData_PerfProc_Process |
Select-Object Name, IDProcess,
@{Name="Memory Usage %";Expression={($_.WorkingSetPrivate / (Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory) * 100}}ÇIKTI:
Name IDProcess Memory Usage %
---- --------- --------------
ApplicationFrameHost 8556 0.0132102058275879
CalculatorApp 15368 0.00387112258683896
CompPkgSrv 14692 0.00532279355690357
CxMonSvc 3224 0.0582120058995908
CxUtilSvc 3248 0.00503245936289065
Greenshot 10684 0.0124359813102202
HPHotkeyNotification 15640 0.00832291356170376
HotKeyServiceUWP 3740 0.011323033566504
HxAccounts 10436 0.0434533510372673
HxOutlook 480 0.000435501291019383
HxTsr 5836 0.0515343194372936
Idle 0 9.67780646709739E-05
IntelCpHDCPSvc 1264 0
IntelCpHeciSvc 1384 0.00508084839522613
LanWlanWwanSwitchingServiceUWP 3104 0.0180007200288012
Locator 3504 0
Memory Compression 1888 3.33555277694979
MicTray64 2348 0.00479051420121321
... ... ...
... ... ...
... ... ...Yukarıdaki kod, makinede o anda çalışan işlemler hakkında bilgi aldı ve her işlemin bellek kullanım yüzdesini hesapladı. Nasıl?
İlk olarak makinede çalışan tüm proseslerin performans sayacı tarihini almak için Win32_PerfFormattedData_PerfProc_Process sınıfı ile Get-WmiObject cmdlet'ini kullandık. Win32_PerfFormattedData_PerfProc_Process sınıfını belirtmek için -Class parametresini kullandığımızı unutmayın; ancak bu parametreyi de atlayabiliriz.
Daha sonra, Get-WmiObject tarafından üretilen çıktıyı Select-Object cmdlet'ine aktararak Ad, IDProcess'i seçtik. ve karşılık gelen bellek kullanım yüzdesi. İşlemin özel çalışma kümesini bilgisayarın toplam fiziksel belleğine bölüp ardından 100 ile çarparak bellek yüzdesini hesapladık.
Bellek Kullanımı % adında hesaplanmış bir özellik oluşturmak için HashTable kullandığımızı unutmayın.
Hepsi PowerShell'de bellek kullanım yüzdesinin nasıl alınacağıyla ilgili.
