Powershell Skript Fsstplattengröße anzeigen?
Ich benötig ein Powershell Skript womit ich die Festplattengröße auslesen kann.
Es sollen aber keine Laufwerke ausgegeben werden die kleiner als 10GB sind.
Weiterhin sollte ein Fehler ausgegeben werden wenn der Frei Speicher unter 10% sinkt.
Aktuell bin ich bis hierhin gekommen
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" | Format-Table @{Label="Drive"; Expression={$_.DeviceID}; width=8}, @{Label="Size"; Expression={$_.Size / 1GB}; Format="000.0"; width=8}, @{Label="GB Free" ; Expression={$_.FreeSpace/1GB} ; Format="000.0" ; width=8} , @{Label="% Free" ; Expression={$_.FreeSpace * 100 /$_.Size}; Format="00.0" ; width=10}
2 Antworten
Get-WmiObject ist deprecated!
aber weshalb holst du dir die Daten nicht mit Get-Volume ?
einfach aus einen Guss:
Get-Volume|
?{$_.size -ge 10GB -and $_.DriveType -like 'Fixed'}|
%{
$_
if ($_.SizeRemaining -lt ($_.Size/10)){Write-Host $_.DriveLetter: is less 10% !!! -fo red
}
}|ft
oder als "Anaconda":
Get-Volume|?{$_.size -ge 10GB -and $_.DriveType -like 'Fixed'}|%{$_;if ($_.SizeRemaining -lt ($_.Size/10)){Write-Host $_.DriveLetter: is less 10% !!! -fo red}}|ft
ist aber unhandlich. macht man besser schrittweise:
$VolumeData = Get-Volume|?{$_.size -ge 10GB -and $_.DriveType -like 'Fixed'}
$VolumeData|?{$_.SizeRemaining -lt ($_.Size/10)}|%{Write-Warning "$($_.DriveLetter): is less 10% !!!"}
$VolumeData|ft
#oder alle daten
$VolumeData|ft *
keine Ahnung was du da mit der Tabellenformatierung von Hand rummurkst?
$Drives = Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3"
foreach ($Drive in $Drives)
{
$SizeInGB = $Drive.size / 1GB
$FreeSpaceInPercent = $Drive.FreeSpace * 100 /$Drive.Size
if ($SizeInGB -gt 10 -and $FreeSpaceInPercent -ge 10)
{
Write-Host $Drive.Name
}
elseif ($SizeInGB -gt 10 -and $FreeSpaceInPercent -lt 10)
{
Write-Warning $Drive.Name
}
}
Bei der Ausgabe musst du nur noch hinschreiben welche Informationen du haben möchtest.
Get-WmiObject ist deprecated!
Wenn schon daten aus dem WMI zu holen sind, Get-CimInstance benutzen!
Es wird nur die C Platte genommen
Das bringt mich schonmal nach vorn, aber wenn ich mehrere Festplatten habe und eine davon ist unter 10% geht das skript nicht richtig.
Es geht immer nur in das if rein nicht in das elseif.