tlberlus
Goto Top

Reporting Skript

Hallo Zusammen,

ich habe mal, um des Lernens und Monitoring willens, ein kleineres Skript geschrieben, welches ich in der Aufgabenplanung laufen lassen will.
Ich würde gerne eure Meinung hierzu hören/wissen, was man noch hinzufügen könnte.

<#
Anforderung: Installierte Powershell auf Installations- und Zielsystem; Berechtigungen; Exchangeserver

Das Tool erstellt Speicher-Reports für die Zielsystem und legt sie als Html-Datei in einem versteckten Ordner ab. 
Die Reports werden per Mail verschickt. Am Ende eines Monats werden der momentane und der Report vom 1. versendet. 
#>


#========AD-Abfrage nach den Zielsystemen========#

$Server = Get-ADComputer -Filter * | where {$_.name -like "vm*"} | select -ExpandProperty  name | Sort-Object  

#========Deklaration von Zeit-variablen========

$time = Get-Date -Format d
$ty = (Get-Date).Year
$tm = (Get-Date).Month
$tm2 = (Get-Date).AddDays(+1)
$tm2 = ($tm2).Month

#========Prüfung/Erstellung des Speicherorts der Reports========#

$path = "C:\Reports"  
$search = Test-Path $path

if($Search -eq "True"){  
}else{
New-Item $path -type directory 
Set-ItemProperty $path -Name Attributes -Value ([System.IO.FileAttributes]::Hidden) 
}

#========Erstellung der Tabellen========

$table1 = Get-WmiObject win32_logicaldisk -ComputerName $Server | where{$_.DriveType -eq 3} |select `
    @{Expression={$_.PSComputername};Label="System"}, `  
    @{Expression={$_.DeviceID};Label="Partition"}, `  
    @{Expression={[decimal]("{0:N0}" -f($_.Size/1gb))};Label="Max.(GB)"},`  
    @{Expression={[decimal]("{0:N0}" -f($_.Freespace/1GB))};Label="Frei(GB)"}, `  
    @{Expression={if((($_.freespace/1gb)/($_.size/1gb))*100-gt 10) {"{0:P0}" -f(($_.freespace/1gb)/($_.size/1gb))}else{"{0:P0}" -f(($_.freespace/1gb)/($_.size/1gb))}};Name="Frei(%)"}, `  
    @{Expression={if((($_.freespace/1gb)/($_.size/1gb))*100-gt 10) {"OK"}else{"Warnung"}};Name="Status"}`  
    | ConvertTo-Html -as Table -Fragment -PreContent "<h2>Uebersicht</h2>" | Out-String  

$table2 = Get-WmiObject win32_logicaldisk -ComputerName $Server | where{$_.DriveType -eq 3} |select `
    @{Expression={if((($_.freespace/1gb)/($_.size/1gb))*100-gt 10){}else{$_.PSComputername}};Label="System"}, `  
    @{Expression={if((($_.freespace/1gb)/($_.size/1gb))*100-gt 10){}else{$_.DeviceID}};Label="Partition"} `  
    | ConvertTo-Html -as Table -Fragment -PreContent "<h3>Ueberpruefen</h3>" | Out-String  


#========Erstellen der Report-Datei========#

 ConvertTo-Html -Head "<h1>$time Serverreport: VM06-CIBS-DC1 </h1>" -PostContent $table1, $table2 -CssUri C:\style.css `  
    | Set-Content C:\Reports\Report_$time.html 

#========Prüfung auf Datum========

if($tm2 -gt $tm){
 
$body = Get-Content C:\Reports\Report_01.$tm.$ty.html
$body2 = Get-Content C:\Reports\Report_$time.html

Send-MailMessage -From TestIT@mail.de -To TestIT@mail.de -Subject Server-Report -SmtpServer Test-msx -body "$body $body2" -BodyAsHtml   
}else{

$body = Get-Content C:\Reports\Report_$time.html
Send-MailMessage -From TestIT@mail.de -To TestIT@mail.de -Subject Server-Report -SmtpServer Test-msx -body "$body" -BodyAsHtml   

}

und die css

body{
background-color: white;
color:black;
}

table, th, td {
border: 1px solid #040;
border-collapse: collapse;
empty-cells: hide;
background-color: white;

font-family: Lucida Console;
font-size: 11pt;
text-align: center;
} 

th{
background-color:cyan;
}

h1{
width:200pt;
background-color: limegreen;
color:black;
font-size: 15pt;
}

h2{
background-color:lightblue;
width:200pt;
}

h3{
background-color:orangered;
width:200pt;
}

Grüße,

Tiberius

Content-Key: 253798

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

Printed on: April 19, 2024 at 05:04 o'clock