Uzak bir bilgisayardaki "disk belleği olmayan havuz" değerine ulaşmak istedim. Bunun için iki seçenek var. Performans sayaçları (performance counters) ve WMI (ya da yeni adıyla CIM) sorguları.
Performans sayaçları konusu biraz karışık. Dile göre farklılık gösterebiliyor. Örnek olarak uzak bilgisayar İngilizce yerelleştirmeye sahipse bu sayaç değerini okumak için.
(Get-Counter -Computername uzakpc "\Memory\Pool Nonpaged Bytes").CounterSamples.CookedValue
yeterli olurken, Türkçe bir bilgisayarda
(Get-Counter -Computername uzakpc "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue
çalışmadı. Onun yerine terminalden
Invoke-Command -Computername uzakpc {Get-Counter "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue}ile sonuca ulaştım. Ancak bu satırı kopyalayıp bir metin dosyasına kaydedip ps1 uzantılı bir betik dosyası oluşturduğumda aldığım hata
Internal performance counter API call failed. Error: c0000bb9.
+ CategoryInfo : InvalidResult: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
+ PSComputerName : uzakpc oldu. Bir sorun var. O da dosyayı UTF-8 olarak kaydetmek. Kodlamayı ANSI olarak değiştirince sorun çözüldü. Şu sayfada powershell'in ps1 dosyalarında UTF-8 kodlamasını da kabul ettiği, sorunun sadece bazı karakterlerin kopyala yapıştır sırasında yanlış yerleştirildiğinden bahsedilmiş. Bu konu henüz incelenmedi.
İkinci yöntem olarak CIM sorgusu ile de ilerleyebilirdim.
(Get-CIMInstance -Computername uzakpc Win32_PerfFormattedData_PerfOS_Memory).PoolNonpagedBytes
Ama ilginç bir şekilde ilk kullanımda bu değeri dönmesi uzun sürüyor (+1 dakika).
Hiç yorum yok:
Yorum Gönder