BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











[Porada] Skrypt sprawdzajacy pojemność wolumenów Distribution Point w SCCM

10-12-2012 06:15 | Mariusz Zarzycki
Wolna przestrzeń dla Distribution Pointow jest istotnym elementem, który musi być monitorowany przez administratorów ConfigMgra. Można to zrobić poprzez SCOM-a chociaż z doświadczenia wiem, że Management Pack dla ConfigMgra nie jest jednym z najlepszych. Poniżej szczegóły jak to zrobić przy pomocy PowerShell-a.

Założenia - Dwa warninig wysyłane mailem przy 175GB oraz 100GB, Error przy 50GB. 

Skrypt wykorzystuje plik tekstowy, który zawiera listę wszystkich serwerów pełniących role Distribution Point w organizacji ConfigMgra.

Weryfikowane są jedynie wolumeny, na których nie ma pliku no_sms_on_drive.sms, który wskazuje, które dyski maja być używane przez Distribution Point.

# Author: Mariusz Zarzycki
# Issue warning if % free disk space is less
# The first warning is normally sent at 175 GB.
# An error message is sent at 50 GB.

$percentWarning = 25;
$spaceWarning1 = 175;
$spaveWarning2 = 100;
$spaceError = 50;

# Get server list
$servers = Get-Content "c:\scripts\mariusz\serverlist.txt";
$datetime = Get-Date -Format "yyyyMMddHHmmss";

# Add headers to log file
Add-Content "c:\scripts\mariusz\results\DP_volumes_$datetime.txt" "loc|server|deviceID|dpvol|sizeGB|freeSpaceGB|percentFree";

foreach($server in $servers)
{
	# Get fixed drive info
	$disks = Get-WmiObject -ComputerName $server -Class Win32_LogicalDisk -Filter "DriveType = 3";
	$loc = $server.substring(0,3)

	foreach($disk in $disks)
	{
		$deviceID = $disk.DeviceID;
		[float]$size = $disk.Size;
		[float]$freespace = $disk.FreeSpace;
		$percentFree = [Math]::Round(($freespace / $size) * 100, 2);
		$sizeGB = [Math]::Round($size / 1073741824, 2);
		$freeSpaceGB = [Math]::Round($freespace / 1073741824, 2);
		$drive = $deviceID.substring(0,1);
		$file = "\\$server\$drive$\no_sms_on_drive.sms";
		$FileExists = Test-Path $file;

		if($FileExists -eq $True)
		{
			$colour = "White";
			$dpvol = "No";
		}
		else
		{
			$dpvol = "Yes";
			if($freeSpaceGB -lt $spaceWarning1)
			{
				$email = New-Object System.Net.Mail.MailMessage
				$email.From = "CM_DPs_Alerts@XXXXX.com"
				$email.To.Add("mariusz.zarzycki@XXXXXXXX")

				$colour = "Green";
				$email.Body = "Warning !! DP Volume $DeviceID at $server is runnig less then $spaceWarning1 GB(free space is $freeSpaceGB).`r`n`r`n"
				$email.Subject = "Warning !! DP Volume $DeviceID at $server is runnig less then $spaceWarning1 GB(free space is $freeSpaceGB).";
				if($freeSpaceGB -lt $spaceWarning2)
				{
					$colour = "Yellow";
					$email.Body = "Warning !! Second Reminder DP Volume $DeviceID at $server is runnig less then $spaceWarning2 GB(free space is $freeSpaceGB).`r`n`r`n"
					$email.Subject = "Warning !! Second Reminder DP Volume $DeviceID at $server is runnig less then $spaceWarning2 GB(free space is $freeSpaceGB).";
					if($freeSpaceGB -lt $spaceError)
					{
						$colour = "Red";
						$email.Body = "ERROR !! DP Volume $DeviceID at $server is runnig less then $spaceError GB(free space is $freeSpaceGB).`r`n`r`n"
						$email.Subject = "ERROR !! DP Volume $DeviceID at $server is runnig less then $spaceError GB(free space is $freeSpaceGB).";
					}
				}
				$email.Priority = [System.Net.Mail.MailPriority]::High
				$smtp = New-Object System.Net.Mail.SmtpClient
				$smtp.Host = "smtp.XXXXX.com"
				$smtp.Send($email)
			}
		}
		Write-Host -ForegroundColor $colour "$loc $server $deviceID $dpvol $percentage free space = $percentFree%";
		Add-Content "c:\scripts\mariusz\results\DP_volumes_$datetime.txt" "$loc|$server|$deviceID|$dpvol|$sizeGB|$freeSpaceGB|$percentFree";
	}
}

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.