2016-11-02 5 views
0

디스크 공간을 확인하는 스크립트가 1 년 반 동안 실행되었으므로 이메일이 제대로 전송되었는지 확인해야합니다.WMI를 통해 유효하지 않은 데이터 수신

오늘 나는 디스크 공간이 0GB 였다고 경고를 받았다. 나는 서버에 로그인하여 약 30gbs를 사용할 수 있었다.

공간을 검사하는 코드의 일부입니다.

[decimal]$thresholdspace = 5 
$tableFragment= Get-WMIObject -ComputerName $computer Win32_LogicalDisk ` 
| select __SERVER, DriveType, VolumeName, Name, @{n='Size (Gb)' ;e={"{0:n2}" -f ($_.size/1gb)}},@{n='FreeSpace (Gb)';e={"{0:n2}" -f ($_.freespace/1gb)}}, @{n='PercentFree';e={"{0:n2}" -f ($_.freespace/$_.size*100)}} ` 
| Where-Object {$_.DriveType -eq 3 -and [decimal]$_.PercentFree -lt [decimal]$thresholdspace} 

그래서 ISE 세션을 열고 다음을 수행했습니다.

$computer = 'Server_01' 

Get-WMIObject -ComputerName $computer Win32_LogicalDisk | select __SERVER, DriveType, VolumeName, Name,FreeSpace 

과 함께 반응 :

__SERVER : Server_01 
DriveType : 2 
VolumeName : 
Name  : A: 
FreeSpace : 

__SERVER : Server_01 
DriveType : 3 
VolumeName : 
Name  : C: 
FreeSpace : 31372767232 

__SERVER : Server_01 
DriveType : 5 
VolumeName : 
Name  : E: 
FreeSpace : 

그래서 나는 그 공간을 점점 내 코드의 일부를 실행하고 그것을 반환 다음

__SERVER  : Server_01 
DriveType  : 3 
VolumeName  : 
Name   : C: 
Size (Gb)  : 0.00 
FreeSpace (Gb) : 0.00 
PercentFree : 

그래서 나는 도망 간단한 WMI 쿼리를 사용하여 데이터없이 응답했습니다.

__SERVER : Server_01 
DriveType : 2 
VolumeName : 
Name  : A: 
FreeSpace : 

__SERVER : Server_01 
DriveType : 3 
VolumeName : 
Name  : C: 
FreeSpace : 

__SERVER : Server_01 
DriveType : 5 
VolumeName : 
Name  : E: 
FreeSpace : 

내가 왜 잘못되었거나 불완전한 데이터로 보이는가에 대한 아이디어가 있습니까? 나는 이런 것을 본적이 없으며 전에도이 문제에 부딪치지 않았습니다. 실행중인 서버에서 아무 것도 변경되지 않았습니다.

+0

는 "GET-WMIObject에서 -ComputerName $ 컴퓨터의 Win32_LogicalDisk을"빈 VolumeName에와의 FreeSpace를 반환하기 위해 그냥 간단하게 할 수 있습니까? 이런 일이 끊임없이 발생합니까, 아니면 간헐적으로 발생합니까? 모든 서버, 일부 서버, localhost? 간헐적 인 경우 복잡한 코드를 단계별로 전개하여 디버깅, 읽기 및 유지 관리가 쉬워지고 데이터가 생길 때까지 루프/슬립하십시오. –

+0

약간 접선이지만 서버를 재부팅하십시오. 자, 당신은 마술처럼 작동 할 수있는 합리적인 기회가 있다는 것을 알고 있습니다. 또한 출력이 변경되었습니다. 최근에 변경된 사항은 무엇입니까? 설치/제거/패치/업그레이드/설정이 변경 되었습니까? – TessellatingHeckler

+0

Kory - 당신은 정확합니다, 그것은 빈 값을 반환했고이 서버에서만 간헐적으로 발생합니다. 나는 Get-WmiObject -ComputerName $ computer Win32_logicalDisk도 공백으로 반환 된 것처럼 여기에 문제가되는 코드를 보지 못했다. TessellatingHecklers 포인트에 관해서는, 마술처럼 그 기회가있다. 그러나 문자 그대로 서버상의 어떤 것도 변하지 않았다. 나는 서버를 재부팅 할 수는 있지만, 서버를 재부팅 할 수는 없다. 나는이 시점에서 정보를 얻는다. – JonnyBoy

답변

0

죄송합니다. 댓글을 올리려면 50 개의 평판을 가져야합니다. 답변으로 의견을 추가해야합니다.

사용자가 실행하면 어떻게됩니까 :

get-ciminstance -computername $computer -classname Win32_Logicaldisk 
+0

이것을 시도한 의미는 불행히도 지금 일하고 있습니다. – JonnyBoy

관련 문제