Powershell Get-Process 음수 메모리 값 cmdlet을 사용하여 확인을 수행했으며

Powershell Get-Process cmdlet을 사용하여 확인을 수행했으며 일부 프로세스에 대해 이상한 값을 얻었습니다. 리소스 모니터가보고 한대로 SQL Server 인스턴스를 실행하고 3GB + RAM을 사용하는 서버에서 테스트했으며 Get-Process를 실행할 때 SQL Server 프로세스에서 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를 선택하면 서식을 지정하지 않아도됩니다.


답변