Powershell Get-Processコマンドレットを使用していくつかの検証を行っていて、一部のプロセスについて奇妙な値を得ました。 SQL Serverインスタンスを実行し、3GB以上を消費するサーバーでテストしましたRAMリソースモニターが報告したとおり、Get-Processを実行すると、SQLサーバープロセス、別のプロセスのWorkingSetに負の値が表示されました2GB +のPrivateMemorySizeを消費しており、PMで同じ負の値を取得しています。
以下は結果のスクリーンショットです。
OSはポルトガル語です。
パワーシェル:
sqlservrと最後のscvhostを確認してください...
幸いなことに、私のスクリプトはWMI(Win32_Processクラス)を使用してプロセス情報を取得し、そこにある値は正しく、すべてが一致しています。
バグですか?大きな価値があるのでしょうか? Powershell v3を使用しています。
これはx64サーバーですか?もしそうなら、それは可能です このブログ投稿 があなたの問題を説明しています。どうやら、それはget-processがx64システムメモリを読み取る方法に関係しています。
ポスターが負の数を表示した理由はかなり単純です。WSプロパティはWorkingSetにエイリアスされていますが、WorkingSetは32ビット値です。ポスターの場合、ワーキングセットのサイズが32ビットの値をオーバーフローして、負の数が表示されていました。
ブログによるソリューションは、最終的にはクエリ結果のフォーマットを強制することです:
$process = “*SQL"*” GPS $process | ft name, workingset64 –auto
WorkingSetの代わりにWorkingSet64を選択すると、フォーマットせずにうまくいきました。