PowerShell: Simpel freien Speicherplatz von AD-Computern überwachen

Aus der Sammlung „kann man machen, muss man aber nicht“ – ein weiteres PowerShell-Script, dass bei allen aktiven und erreichbaren AD-Integrierten Windows Systemen die freie Kapazität lokaler Datenträger ausliest und gegen einen bestimmten Wert prüft. Bei erreichen des definierten Grenzwertes wird eine E-Mailbenachrichtigung ausgelöst.

Voraussetzung sind die Active Directory PowerShell Add-Ins.

#Allgemeine Variablen definieren
$PSMailDomain = "Mail-Domain"
$PSEmailServer = "SMTP-Server"
$PSEmailRecipient = "Empfaenger"
$FreeSpaceThreshold = "0.04" # 0.04 Entspricht 4% freiem Speicherplatz

#Optional Active Directory PowerShell-Modul Importieren
#Import-Module ActiveDirectory

#Abfragen der aktiven Computerkonten im Active Directory
$ADComputers = Get-ADComputer -Filter {(Enabled -eq $True)}

ForEach ($ADComputer in $ADComputers) {
	
	$servername = $ADComputer.Name
	
	#Abfragen der Disks des entsprechenden Systems mit Speicher weniger 4%
	$ActualDisk = Get-WmiObject win32_logicaldisk -ComputerName $servername -Filter "Drivetype=3" -ErrorAction SilentlyContinue | Where-Object { ($_.freespace/$_.size) -le $FreeSpaceThreshold }

	if ($ActualDisk) {

		#Einheiten umrechnen
		$Diskname = $ActualDisk.VolumeName
		$VolumeLabel = $ActualDisk.DeviceID
		$DiskFreeSpace = "{0:n2}" -f($ActualDisk.FreeSpace/1gb)
		$DiskSize = "{0:n2}" -f($ActualDisk.Size/1gb)
		$DiskFreeSpacePerc = ($ActualDisk.freespace/$ActualDisk.size)


		#E-Mail Notification senden
		Send-MailMessage -to "$PSEmailRecipient" -from "$env:computername@$PSMailDomain" -Subject "$servername | $VolumeLabel | $Diskname | Speicherplatz gering!" -body "<b>$servername</b><br /><br />Freier Speicherplatz auf $VolumeLabel $Diskname liegt bei $DiskFreeSpace Gbyte von insgesamt $DiskSize Gbyte." -BodyAsHtml

	}

}

In Intervallen via Aufgabenplanung ausgeführt, unterstützt das Script bei der täglichen Administration.

Mit dem Parameter „SearchBase“ kann der Filter noch erweitert werden. Bspw. um nur Computer-Accounts aus einer bestimmten Organisationseinheit oder Gruppe zu überprüfen.

In diesem Beispiel die OU Server:

-Filter * -SearchBase "OU=Server, DC=domain, DC=local"

Leon Gawinski

System Engineer Softwarebereich Microsoft

Empfohlene Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Empfehlungen
Schließen
Schaltfläche "Zurück zum Anfang"