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

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: em-pie
Lösung em-pie 14.12.2017 um 09:40:56 Uhr
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
Mitglied: K-ist-K
K-ist-K 14.12.2017 um 09:49:46 Uhr
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"
Mitglied: AnkhMorpork
Lösung AnkhMorpork 14.12.2017 um 09:54:02 Uhr
Goto Top
Versuch mal ... if ($disk -gt 5) ...
Mitglied: 134998
Lösung 134998 14.12.2017 um 09:58:25 Uhr
Goto Top
if ((gwmi win32_Logicaldisk -Filter "DeviceID = 'C:'").FreeSpace -gt 1GB){  
    write-host "Alles OK"  
}else{
   write-host "Mach hinne Speicher wird knapp!"  
}
Mitglied: K-ist-K
K-ist-K 14.12.2017 aktualisiert um 10:00:32 Uhr
Goto Top
so funktioniert jetzt alles.
Ihr seit toll.

Danke @em-pie, @AnkhMorpork und @134998


Lg K