k-ist-k
Goto Top

PowerShell - freien Speicherplatz prüfen und Daten übertragen

Hallo Werte Administratoren,

ich probiere jetzt seit 2 Tagen ein Script zu erstellen.
Und hänge jetzt bei einen neuen Abschnitt
.
Ziel ist es den freien Speicherplatz eines Remote System von C:\ zu ermitteln
und dann zu prüfen ob genügend Platz frei ist.


Es fängt schon mal an das ich sehr umständlich den Freien Speicherplatz ermittle.

Get-Wmiobject Win32_logicaldisk -Computername {PC Name} -filter "DeviceID='C:'" | Select-Object freespace > freespace.txt  
$space = "C:\Scripts\freespace.txt"  
#entfernt die ersten 3 Zeilen
(Get-Content $space | Select-Object -Skip 3) | Set-Content $space
#entfernt alle Leerzeichen
$space = Get-Content $space |Foreach-Object{$_.Replace(" ","")}  

if ($space > 500000)
{
	{Daten übertragen}
}
else
{
	echo "Disk zu klein" >> noSpace.txt  
}


Eigentlich will ich die Variable $space in einen Integer wandeln, geht aber nicht.
$space2 = [int]$space

Fehler beim konvertieren zu Integer
Cannot convert the "System.Object" value of type "System.Object" to type "System.Int32".


Die ganzen Convert Befehle die ich gefunden habe, funktionieren nicht.
Gibts eine gute Möglichkeit, nur den Zahlenwert zurückzubekommen beim prüfen des Freespace ?
Ohne Überschrift, Trennlinie, Leerzeilen, ...

Danke schon mal, bin schon ein wenig am verzweifeln

Content-Key: 358176

Url: https://administrator.de/contentid/358176

Printed on: April 20, 2024 at 05:04 o'clock

Member: em-pie
Solution em-pie Dec 14, 2017 at 08:40:56 (UTC)
Goto Top
Moin,

warum holst du dir den freien Speicher nicht so:
https://stackoverflow.com/questions/12159341/how-to-get-disk-capacity-an ...

dann hast du den Wert direkt in einer Variablen und musst den nicht erst in eine TExtdatei schreiben und diese Auslesen, um am Ende dann den eigentlichen Wert zu erhalten...

Grß
em-pie
Member: K-ist-K
K-ist-K Dec 14, 2017 at 08:49:46 (UTC)
Goto Top
$disk = Get-WmiObject Win32_LogicalDisk -ComputerName localhost -Filter "DeviceID='C:'" | Foreach-Object {$_.FreeSpace}  
echo $disk

if ($disk > 5)
{
	echo "passt"  
}
else
{
	echo "geht nicht"  
}

Super Tipp. Das suchte ich auch lange, deswegen machte ich das anders ; )
Aber die IF Abfrage gibt das falsche aus.

Als Wert bekomme ich 3046674432 und dennoch kommt "geht nicht"
Member: AnkhMorpork
Solution AnkhMorpork Dec 14, 2017 at 08:54:02 (UTC)
Goto Top
Versuch mal ... if ($disk -gt 5) ...
Mitglied: 134998
Solution 134998 Dec 14, 2017 at 08:58:25 (UTC)
Goto Top
if ((gwmi win32_Logicaldisk -Filter "DeviceID = 'C:'").FreeSpace -gt 1GB){  
    write-host "Alles OK"  
}else{
   write-host "Mach hinne Speicher wird knapp!"  
}
Member: K-ist-K
K-ist-K Dec 14, 2017 updated at 09:00:32 (UTC)
Goto Top
so funktioniert jetzt alles.
Ihr seit toll.

Danke @em-pie, @AnkhMorpork und @134998


Lg K