Powershell Get-Process nilai memori negatif

8

Saya membuat beberapa verifikasi dengan cmdlet Powershell Get-Process dan mendapat beberapa nilai aneh tentang beberapa proses. Saya menguji pada server dengan SQL Server Instance berjalan dan mengkonsumsi 3GB + RAM sebagai Resource Monitor melaporkan, dan ketika menjalankan Get-Process, saya mendapat nilai negatif untuk WorkingSet pada proses SQL server, proses lain mengkonsumsi 2GB + dari PrivateMemorySize dan mendapat yang sama nilai negatif pada PM.

Di bawah ini adalah screenshot dari hasilnya.

Monitor Sumber Daya OS dalam bahasa Portugis, maaf.

Powershell:

masukkan deskripsi gambar di sini Periksa sqlservr dan scvhost terakhir ...

Untungnya skrip saya menggunakan WMI (kelas Win32_Process) untuk mendapatkan informasi proses, dan nilai-nilai di sana benar dan semuanya cocok ..

Apakah ini bug? Mungkin dengan nilai besar? Saya menggunakan Powershell v3.

esserafael
sumber

Jawaban:

11

Apakah ini Server x64? Jika demikian, mungkin posting blog ini menjelaskan masalah Anda. Tampaknya itu ada hubungannya dengan cara get-proses membaca memori sistem x64:

Alasan poster itu melihat angka negatif cukup sederhana: properti WS alias WorkSet, tetapi WorkingSet adalah nilai 32-bit. Dalam kasus poster, ukuran set kerja melebihi nilai 32-bit, menghasilkan angka negatif yang ditampilkan.

Solusi menurut blog pada akhirnya adalah menegakkan pemformatan hasil permintaan:

$process = “*SQL"*” GPS $process | ft name, workingset64 –auto

Kate
sumber
Terima kasih, saya curiga ada sesuatu dengan ukuran nilai dan sebagainya. Juga, saya hanya bisa mendapatkan hasil yang benar ketika menjalankan perintah secara lokal di server, jika saya menjalankan remote dengan parameter -ComputerName, saya mendapatkan hasil negatif yang sama. Menjalankan dengan PSSession berfungsi dengan baik.
esserafael
0

Memilih WorkingSet64 alih-alih WorkingSet melakukan trik untuk saya tanpa memformat.

Jamie
sumber