expetrov
Goto Top

Dieverse Ordners mit Powershell monitoren

Ich bin dabei ein kleine Powershell script zu erstellen welche auf ein WIN Server diverse ordners den Aktuellen Datum mit $_.LastWriteTime vergleichen soll, und wenn ein Datei fehlt es soll dann ein Send-Mailmessage ausgeführt werden.. Könnt Ihr bitte mein script kurz anschauen und ein paar tipps geben wie ich es verbessern kann. zumbeispiel wie ich die diverse ordners von eine externe liste inportieren kann..

Danke & Gruss Mike

$sub = 'Server Monitoring 10:00 Uhr check'

#Aktuelle Datum
$day = (get-date).AddDays(0).Date

#Verzeichnisse
$Datei1 = '\\server\LW$\Orner\*.txt.bak'
$Datei2 = '\\server\LW$\Orner\unterordner\*.txt'
$Datei3 = '\\server\LW$\Orner\Orner1\ordner2\*.txt'

if (Test-Path $Datei)
{get-childitem $Datei1 | where-object {$_.LastWriteTime -ge $day }}

else {Send-Mailmessage -to meineemail@admin.com -Subject " $sub " -from monitoring@admin.com -Body "Im Verzeichnis '$Datei1' existiert nicht bitte prüfen.." -SmtpServer "smtp.server.com" }
#else {echo "Im Verzeichnis '$Datei' Datei existiert nicht bitte prüfen.."}

if (Test-Path $Datei2)
{get-childitem $Datei2 | where-object {$_.LastWriteTime -ge $day }}

else {Send-Mailmessage -to meineemail@admin.com -Subject " $sub " -from monitoring@admin.com -Body "Im Verzeichnis '$Datei2' existiert nicht bitte prüfen.." -SmtpServer "smtp.server.com" }
#else {echo "Im Verzeichnis '$Datei' Datei existiert nicht bitte prüfen.."}

if (Test-Path $Datei3)
{get-childitem $Datei3 | where-object {$_.LastWriteTime -ge $day }}

else {Send-Mailmessage -to meineemail@admin.com -Subject " $sub " -from monitoring@admin.com -Body "Im Verzeichnis '$Datei3' existiert nicht bitte prüfen.." -SmtpServer "smtp.server.com" }
#else {echo "Im Verzeichnis '$Datei' Datei existiert nicht bitte prüfen.."}

Content-Key: 276965

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

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

Mitglied: 114757
114757 Jul 10, 2015 updated at 08:37:58 (UTC)
Goto Top
Moin,
Für solche Aufgaben gibt es das FileSystemWatcher-Objekt.
Siehe: VBA - VBS : Umbennen und Verschieben von Dateien in Loop

$day = (get-date).AddDays(0).Date
Was soll das für ein Konstrukt sein ?? Da reicht ein (get-date).Date

Um Pfade aus einer Textdatei zu laden bedienst du dich einer einfachen foreach-Schleife
(gc 'c:\Ordner\pfade.txt') | %{  
    # in $_ steht immer der Inhalt der aktuellen Zeile aus der Textdatei
    Write-Host $_
}

Gruß jodel32
Member: expetrov
expetrov Jul 10, 2015 at 09:34:34 (UTC)
Goto Top
Hallo jodel32,

Danke für die info... face-smile

$day = (get-date).AddDays(0).Date = sorry, ich habe nach diverse funktionen beispiel: AddDays(-1).Date getestet und ich glaube ich habe mich vertippt /vergessen zu korrigieren..

Gruss
Mike
Member: aqui
aqui Jul 10, 2015 updated at 11:09:58 (UTC)
Goto Top
Nur um Mal das Drama hier um den Plural von "Ordner" zu klären:
http://www.duden.de/rechtschreibung/Ordner
Die diversen anderen Dinge mal außer acht gelassen.
Es sei nochmal auf den "Bearbeiten" Button hingewiesen face-wink
Aber es ist ja Freitag....