2016-11-02 2 views
0

Ich habe ein Skript für die bessere Hälfte eines Jahres ausgeführt, das jetzt nach Speicherplatz sucht, sollte es niedrig sein, sendet es eine E-Mail aus, die gut funktioniert.Ungültige Daten über WMI empfangen

Heute habe ich eine Warnung erhalten, die besagt, dass der Speicherplatz bei 0 GB lag. Ich habe mich beim Server angemeldet und hatte ca. 30 GB zur Verfügung.

Teil des Codes, der den Speicherplatz überprüft.

[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} 

So öffnete ich eine ISE-Sitzung und tat folgendes.

$computer = 'Server_01' 

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

und es reagierte mit:

__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 : 

So lief ich dann den Teil meines Code, den Raum wird immer und es wieder mit dem folgenden:

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

So lief ich die einfache WMI-Abfrage und es antwortete ohne Daten ..

__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 : 

Irgendeine Idee, warum ich ungültige oder unvollständige Daten bekomme? Ich habe noch nie so etwas gesehen und bin noch nie auf dieses Problem gestoßen. Auf keinem der beiden Server hat sich nichts geändert.

+0

vereinfacht werden, um nur, dass "Get-WMIObject -ComputerName $ Computer Win32_LogicalDisk" ist leer Volume und Freespace Rückkehr? Passiert das ständig oder zeitweise? Alle Server, einige Server, localhost? Wenn Sie intermittierend sind, können Sie Ihren komplexen Code möglicherweise in Schritten auflösen, um das Debuggen, Lesen und Warten zu erleichtern, und dann den Loop/Sleep-Vorgang ausführen, bis Sie Daten haben. –

+0

Leichte Tangente, aber ... starte den Server neu. Komm schon, du weißt, dass es eine vernünftige Chance gibt, dass es magisch funktionieren wird. Auch die Ausgabe hat sich geändert - was hat sich sonst kürzlich geändert? Installiert/deinstalliert/gepatcht/aktualisiert/Einstellungen geändert? – TessellatingHeckler

+0

Kory - Sie haben Recht, es wurde ein leerer Wert zurückgegeben und er findet nur zeitweise auf diesem einen Server statt. Ich sehe den Code hier nicht als das Problem, nur Get-WmiObject -ComputerName $ Computer Win32_logicalDisk auch leer zurückgegeben. Was TessellatingHecklers betrifft, gibt es magisch diese Chance, aber buchstäblich nichts auf den Servern hat sich geändert. Ich kann den Server neu starten, der die Anrufe macht, aber ich kann den Server nicht neu starten, von dem ich in diesem Moment die Informationen bekomme. – JonnyBoy

Antwort

0

Entschuldigung, 50 Ruf zu kommentieren haben. Ich muss einen Kommentar als Antwort hinzufügen.

Was passiert, wenn Sie laufen:

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

Bedeutet, dies zu versuchen, leider funktioniert es jetzt. – JonnyBoy

Verwandte Themen