web-dev-qa-db-ja.com

Powershell Get-Processの負のメモリ値

Powershell Get-Processコマンドレットを使用していくつかの検証を行っていて、一部のプロセスについて奇妙な値を得ました。 SQL Serverインスタンスを実行し、3GB以上を消費するサーバーでテストしましたRAMリソースモニターが報告したとおり、Get-Processを実行すると、SQLサーバープロセス、別のプロセスのWorkingSetに負の値が表示されました2GB +のPrivateMemorySizeを消費しており、PMで同じ負の値を取得しています。

以下は結果のスクリーンショットです。

Resource Monitor OSはポルトガル語です。

パワーシェル:

enter image description here sqlservrと最後のscvhostを確認してください...

幸いなことに、私のスクリプトはWMI(Win32_Processクラス)​​を使用してプロセス情報を取得し、そこにある値は正しく、すべてが一致しています。

バグですか?大きな価値があるのでしょうか? Powershell v3を使用しています。

8
esserafael

これはx64サーバーですか?もしそうなら、それは可能です このブログ投稿 があなたの問題を説明しています。どうやら、それはget-processがx64システムメモリを読み取る方法に関係しています。

ポスターが負の数を表示した理由はかなり単純です。WSプロパティはWorkingSetにエイリアスされていますが、WorkingSetは32ビット値です。ポスターの場合、ワーキングセットのサイズが32ビットの値をオーバーフローして、負の数が表示されていました。

ブログによるソリューションは、最終的にはクエリ結果のフォーマットを強制することです:

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

11
Kate

WorkingSetの代わりにWorkingSet64を選択すると、フォーマットせずにうまくいきました。

0
Jamie