trillian2002
Goto Top

Powershell, Lokales Ergebnis und Server Ergebnis unterschiedlich

Hallo,

ich hoffe ihr könnt mir helfen. Ich bin so langsam echt am verzweifeln...

Zu meinem Problem:
Ich soll für meinen Ausbilder ein Powershell Skript entwerfen dass den Freien Speicherplatz auf den Serverlaufwerken berechnet und ab einer bestimmten Grenze eine Email schickt.

Nun muss ich dazu sagen das ich noch ein absoluter Powershellneuling bin, aber ich hab alles hinbekommen so wie er es wollte.

Serverlaufwerke werden ausgelesen, Ergebnis in einer HTML Datei gespeichert, und wenn die Warngrenze erreicht wurde wird das HTML File als Email verschickt.

Mein Problem ist jetzt folgendes:

Wenn ich das Skript LOKAL ausführe bekomm ich wie gewollt als letzte Spalte in der Email die Prozentangabe des freien Speichers.

Auf dem Server (Windows Server 2003) jedoch nicht!

Weiss jemand woran das liegen könnte?!?

Hier mal mein Skript:

 
$Empfaenger = "bla@blabla.com" 
$Absender = error@blabla.com" 
$WarnLimit = "15" 

function sendmail($mail)
{
$body = get-content "d:\log.html" 
$SmtpServer = "10.1.1.105" 

$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = "$SmtpServer" 
$mailmessage.from = "$Absender" 
$mailmessage.To.add("$Empfaenger") 
$mailmessage.Subject = “Serverlaufwerk fast voll!!!”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = $body
$smtpclient.Send($mailmessage)
}

$a = "<style>" 
$a = $a + "BODY{background-color:peachpuff;}" 
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:thistle}" 
$a = $a + "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:PaleGoldenrod}" 
$a = $a + "</style>" 

$festplatten = gwmi win32_logicaldisk -filter "drivetype=3" | select SystemName,DeviceID,VolumeName,@{Name="Size";Expression={"{0:N1}" -f ($_.Size/1gb)}},@{Name="FreeSpace";Expression={"{0:N1}" -f ($_.FreeSpace/1gb)}},@{Name="Prozent";Expression={($_.FreeSpace / $_.Size)*100}} | convertto-html -property SystemName,DeviceID,VolumeName,FreeSpace,Prozent -head $abody "<H2>Freier Speicher</H2>" | Out-File d:\log.html 
$disks = gwmi win32_logicaldisk -filter "drivetype=3" | select Size,FreeSpace 

foreach ($disk in $disks)
{
    $FreierSpeicher = ($disk.freespace / 1GB)
    $GesamtSpeicher = ($disk.Size / 1GB)
    $FreierSpeicherProzent = (($disk.freespace / $disk.Size)*100)
	
    if ($FreierSpeicherProzent -lt $WarnLimit)
    {
    $i++ 
    }   
}

if ($i -gt 0)
{ 
sendmail $mail
}

Content-Key: 136719

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

Printed on: April 25, 2024 at 07:04 o'clock

Member: lowbyte1
lowbyte1 Feb 24, 2010 at 20:59:37 (UTC)
Goto Top
Hi

Ist auf dem Win2003 Server die Powershell installiert ?
Sonst fällt mir da so spontan auch nichs ein.


lowbyte
Member: trillian2002
trillian2002 Feb 25, 2010 at 06:08:26 (UTC)
Goto Top
Ja ist sie!

Er macht ja auch alles, nur das eben die Spalte mit der Prozentangabe in der Email fehlt wenn ichs auf dem Server ausführe.

Sehr seltsam das ganze ^^

trillian2002
Member: lowbyte1
lowbyte1 Feb 25, 2010 at 12:38:58 (UTC)
Goto Top
Hi

Bin nicht gerade der Powershell liebhaber. Doch würde das ganze mal debugen ! Also schritt für schritt ausführen und gucken was sich tut ! Ansonsten müsste ich mir das genau anschauen.
Probier mal mit debugen ... das Problem würde mich auch intressieren !


lowbyte
Member: trillian2002
trillian2002 Feb 25, 2010 at 14:32:06 (UTC)
Goto Top
habs gefunden...

Zeile 29

$festplatten = gwmi win32_logicaldisk -filter "drivetype=3"....

geändert in

$disks = gwmi win32_logicaldisk -filter "drivetype=3"....

dann gings (gleichzeitig hab ich das Prozentergebnis noch auf 2 Stellen nach dem Komma runden lassen)

so sieht die zeile jetzt aus, und funktioniert bestens ;)

$disks = gwmi win32_logicaldisk -filter "drivetype=3" | select SystemName,DeviceID,VolumeName,@{Name="Size";Expression={"{0:N1}" -f ($_.Size/1gb)}},@{Name="FreeSpace";Expression={"{0:N1}" -f ($_.FreeSpace/1gb)}},@{Name="Prozent";Expression={[Math]::Round(($_.FreeSpace / $_.Size)*100 ,2)}} | convertto-html -property SystemName,DeviceID,VolumeName,FreeSpace,Prozent -head $abody "<H2>Freier Speicher</H2>" | Out-File d:\log.html  

danke trotzdem für eure tips