Jump to content

Script für HyperV-Replica Überwachung


Direkt zur Lösung Gelöst von mwiederkehr,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Du siehst, solche Infos gehören gleich immer mit in dei Frage, dann spart man sich solche Postings. ;)

 

Jetzt musst Du feststellen, ob Du von dem Client/Server aus, von dem aus Du das schickst, auch über Port 25 auf den Mailserver zugreifen darfst. Firewall ausgehend vom Client/Server zum Mailserver eingehend. Die Arbeit kann dir niemand abnehmen.

Link zu diesem Kommentar

Hier noch mal der Tipp, den Code etwas einfacher lesbar zu machen ... 

$CredPassword = ConvertTo-SecureString "aaaaa" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential "bbbbb", $CredPassword

$SenMailParams = @{
    To         = '1234@5678.de'
    Subject    = 'HyperV-Replica Alarm'
    Body       = Get-Content $Info_Datei | Out-String
    SmtpServer = 'ddddd' 
    From       = 'Admin@ccccc' 
    Credential = $cred
}

Send-MailMessage  @SenMailParams

Der Code macht das Gleiche wie Dein Code ... es ist, wie ich glaube, nur einfacher zu lesen. Der SMTP-Port ist im Standard sowieso 25. Den musst Du nur angeben, wenn er NICHT 25 ist.

 

Kannst Du diesen Schnipsel denn von dem Rechner aus erfolgreich ausführen, von dem das Script laufen soll?

bearbeitet von BOfH_666
Link zu diesem Kommentar
  • 2 Wochen später...

Moin ihr lieben, ich bräuchte nochmal gebaltes Wissen :lool:

 

Ich habe das Problem das mein script nur Mails abschicken soll wenn der "Test-Path" nicht false ist.

Am script-start lösche ich die Datei die ich bei dem Test-Path abfrage falls die im vorigen durchlauf hängen geblieben ist.

in der for-schleife prüfe ich ob die VM-replikation auf Warnung oder Kritisch steht und nur dann wird die Datei erzeugt die benötigt wird damit Test-Path "true" ist.

Aber aus einem grund denn ich nicht zu sehen/wissen scheine wird immer eine Mail abgeschickt aber der Mailbody der in der for-Schleife erzeugt wird fehlt also ist doch die Test-Path auch nicht erfüllt.

 

Wäre super wenn Ihr mir sagen könnt was und wo da der Fehler ist.

 

Zitat

$Pruefe_HyperV_Replica = Get-VMReplication | select Name,Health,State

$Info_Datei = "C:\Powershell\HyperV Infodatei.txt"
$Log_Datei = "C:\Powershell\HV Logdatei.txt"

$Datum = Get-Date
$VMReplication = Get-VMReplication | select Name,Health,State

##Authentifizierung für Mailserver Anmeldung
$Cred_Password = ConvertTo-SecureString "__________" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential "__________", $Cred_Password

$MailBetreff_Name = (Get-WmiObject Win32_ComputerSystem).Name
$MailBetreff_Domain = (Get-WmiObject Win32_ComputerSystem).Domain

$Datum | Out-File $Log_Datei -append

##Skript Start
 Remove-Item -Path $Info_Datei
 foreach ($vm in $Pruefe_HyperV_Replica)
  {
   $name = $vm.Name
   if ($vm.Health -Contains "Normal" -and $vm.State -Contains "Replicating")
    {
     "$name  -  Alles OK!" | Out-File $Log_Datei -append
    }
   elseif ($vm.Health -eq "Warning") # <-- Schleife für Replikationen mit dem Status Warnung!
    {
     New-Item -Path $Info_Datei
     $Serverbezeichnung = "Der Replikationstatus von Server: $name auf $MailBetreff_Name@$MailBetreff_Domain ist auf WARNUNG gewechselt!" | Out-File $Info_Datei -append
     GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
     "$name  -  Replikation meldet Warnung!" | Out-File $Log_Datei -append
    }
   elseif ($vm.Health -eq "Critical") # <-- Schleife für Replikationen mit dem Status Kritisch!
    {
     New-Item -Path $Info_Datei
     $Serverbezeichnung = "Der Replikationstatus von Server: $name auf $MailBetreff_Name@$MailBetreff_Domain ist auf KRITISCH gewechselt!" | Out-File $Info_Datei -append
     GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
     "$name  -  Kritischer Replikationsstatus!" | Out-File $Log_Datei -append
    }
   }
   $Pruefe_Info_Datei = Test-Path "C:\Powershell\HyperV Infodatei.txt"
   if ($Pruefe_Info_Datei = "True")
    {
     Get-VMReplication | Out-File $Info_Datei -append
     Get-VM -ComputerName Server-HV | Where-Object {$_.State -eq 'OffCritical'}
     Get-PSDrive -PSProvider FileSystem | Out-File $Info_Datei -append
## Einstellungen zum Sender der Mail
     $Mail_Absender = "__________"
     $Mail_Empfaenger = "__________"
     $Mail_Betreff = "HyperV-Replica Alarm"
     $Mail_Server = "__________"
     $Mail_Kopie = "__________"

     $SenMailParams = @{

      To = '__________'

 #   Cc = '__________'

      Subject = 'HyperV-Replica Alarm'

      Body = Get-Content $Info_Datei | Out-String

      SmtpServer = '__________'

      From = '__________'

 #   Port = '587'

      Credential = $cred

      }

     Send-MailMessage @SenMailParams
    }
   elseif ($Pruefe_Info_Datei = "False")
    {
     Write-Host "Alles OK!"
    }
"     " | Out-File $Log_Datei -append
" ----------------------------------------" | Out-File $Log_Datei -append

 

bearbeitet von Mario-HS
Link zu diesem Kommentar
$Pruefe_Info_Datei = Test-Path "C:\Powershell\HyperV Infodatei.txt"
if ($Pruefe_Info_Datei = "True") {

Das sieht sehr komisch aus ... normalerweise sieht sowas so aus ...

if (Test-Path "C:\Powershell\HyperV Infodatei.txt") {

... grad noch mehr gesehen ...

elseif ($Pruefe_Info_Datei = "False")

Das Gleichheitszeichen ist eine Zuweisung in Powershell, keine Prüfung auf Gleichheit ... die machst Du mit -eq. Die boolschen Werte sind auch "$true" und "$false" und nicht "true" und "false". Und wenn eine Variable einen boolschen Wert enthält, kannst die so auf $true prüfen:

 

if ($Pruefe_Info_Datei)

... und so auf $false:

if (-not $Pruefe_Info_Datei)

 

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...