Powershell Get-Process 음수 메모리 값


8

Powershell Get-Process cmdlet을 사용하여 확인을 수행했으며 일부 프로세스에 대해 이상한 값을 얻었습니다. 리소스 모니터가보고 한대로 SQL Server 인스턴스를 실행하고 3GB + RAM을 사용하는 서버에서 테스트했으며 Get-Process를 실행할 때 SQL Server 프로세스에서 WorkingSet에 대해 음수 값을 얻었고 다른 프로세스는 2GB +의 PrivateMemorySize를 사용하고 동일했습니다. PM의 음수 값.

아래는 결과의 스크린 샷입니다.

리소스 모니터 OS가 포르투갈어로되어 있습니다. 죄송합니다.

파워 쉘 :

여기에 이미지 설명을 입력하십시오 sqlservr와 마지막 scvhost를 확인하십시오 ...

운 좋게도 내 스크립트는 WMI (Win32_Process 클래스)를 사용하여 프로세스 정보를 얻습니다. 값이 정확하고 모든 것이 일치합니다.

버그입니까? 큰 가치가 있을까요? Powershell v3을 사용하고 있습니다.

답변:


11

이것은 x64 서버입니까? 그렇다면 이 블로그 게시물에서 문제를 설명 할 수 있습니다. 분명히 get-process가 x64 시스템 메모리를 읽는 방식과 관련이 있습니다.

포스터에 음수가 표시되는 이유는 매우 간단합니다. WS 속성은 WorkingSet에 별칭이 있지만 WorkingSet은 32 비트 값입니다. 포스터의 경우 작업 세트 크기가 32 비트 값을 초과하여 음수가 표시되었습니다.

블로그에 따른 솔루션은 궁극적으로 쿼리 결과의 형식을 강제하는 것입니다.

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


고마워, 나는 그것이 값 크기 등을 가진 것으로 의심했다. 또한 서버에서 로컬로 명령을 실행할 때만 올바른 결과를 얻을 수 있습니다. -ComputerName 매개 변수로 원격을 실행하면 동일한 부정적인 결과가 나타납니다. PSSession으로 실행하면 정상적으로 작동합니다.
esserafael

0

WorkingSet 대신 WorkingSet64를 선택하면 서식을 지정하지 않아도됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.