Jump to content

Mario-HS

Members
  • Gesamte Inhalte

    52
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Mario-HS

  1. Hallöchen allerseits, ich habe mir vorgenommen, allerlei Befehle und Skripte, die ich mit der Zeit eingeprägt/erstellt habe, ein eine Art Tool zu verpacken. Da ich aber kein Coder bin, taste ich mich an die Sache recht rudimentär heran.
    Ich würde mir hier gerne das eine oder andere mal Hilfe erfragen, wenn das in Ordnung ist.:engel:
     
     
    Jetzt aber zu meinem Problem. Ich habe derzeit ein Fehler mit dem Testen von NTP-Servern. Ich rufe per Button.add_click eine Funktion auf, die die nötigen Befehle ausführt, aber durch Unkenntnis meinerseits wird der Befehl/Funktionsaufruf mehrfach mit unterschiedlichen Funktionsaufrufen ausgeführt.
     
    Gibt es eine Möglichkeit, von button.add_click() in der Function test.... eine Art reset zu machen, damit ich mehrere Zeit-Server nacheinander testen kann?
     
    Function test_0.de.pool.ntp.org()
    {
    	$ProgressLog.Text = w32tm /stripchart /Computer:0.de.pool.ntp.org /samples:3 /dataonly | Format-Table -AutoSize | Out-String
    }
    Function test_1.de.pool.ntp.org()
    {
    	$ProgressLog.Text = w32tm /stripchart /Computer:1.de.pool.ntp.org /samples:3 /dataonly | Format-Table -AutoSize | Out-String
    }
    Function test_2.de.pool.ntp.org()
    {
    	$ProgressLog.Text = w32tm /stripchart /Computer:2.de.pool.ntp.org /samples:3 /dataonly | Format-Table -AutoSize | Out-String
    }
    Function test_3.de.pool.ntp.org()
    {
    	$ProgressLog.Text = w32tm /stripchart /Computer:3.de.pool.ntp.org /samples:3 /dataonly | Format-Table -AutoSize | Out-String
    }
    
    Function start_0.de.pool.ntp.org()
    {
    	IF ($CheckBox_Zeit_set.checked)
    	{
    		w32tm /config /syncfromflags:manual /manualpeerlist:"0.de.pool.ntp.org"
    		w32tm /config /reliable:yes /update
    		w32tm /resync
    		$ProgressLog.Text = "Lokaler NTP-Server wurde auf NTP-Pool_Project-Server 0.de.pool.ntp.org festgelegt" | Format-Table -AutoSize | Out-String
    	}
    	else
    	{
    		$ProgressLog.Text = "Hacken zum Festlegen des Ausgewählten Zeitservers ist nicht gesetzt" | Format-Table -AutoSize | Out-String
    	}
    }
    
    Function start_1.de.pool.ntp.org()
    {
    	IF ($CheckBox_Zeit_set.checked)
    	{
    		w32tm /config /syncfromflags:manual /manualpeerlist:"1.de.pool.ntp.org"
    		w32tm /config /reliable:yes /update
    		w32tm /resync
    		$ProgressLog.Text = "Lokaler NTP-Server wurde auf NTP-Pool_Project-Server 1.de.pool.ntp.org festgelegt" | Format-Table -AutoSize | Out-String
    	}
    	else
    	{
    		$ProgressLog.Text = "Hacken zum Festlegen des Ausgewählten Zeitservers ist nicht gesetzt" | Format-Table -AutoSize | Out-String
    	}
    }
    
    Function start_2.de.pool.ntp.org()
    {
    	IF ($CheckBox_Zeit_set.checked)
    	{
    		w32tm /config /syncfromflags:manual /manualpeerlist:"2.de.pool.ntp.org"
    		w32tm /config /reliable:yes /update
    		w32tm /resync
    		$ProgressLog.Text = "Lokaler NTP-Server wurde auf NTP-Pool_Project-Server 2.de.pool.ntp.org festgelegt" | Format-Table -AutoSize | Out-String
    	}
    	else
    	{
    		$ProgressLog.Text = "Hacken zum Festlegen des Ausgewählten Zeitservers ist nicht gesetzt" | Format-Table -AutoSize | Out-String
    	}
    }
    
    Function start_3.de.pool.ntp.org()
    {
    	IF ($CheckBox_Zeit_set.checked)
    	{
    		w32tm /config /syncfromflags:manual /manualpeerlist:"3.de.pool.ntp.org"
    		w32tm /config /reliable:yes /update
    		w32tm /resync
    		$ProgressLog.Text = "Lokaler NTP-Server wurde auf NTP-Pool_Project-Server 3.de.pool.ntp.org festgelegt" | Format-Table -AutoSize | Out-String
    	}
    	else
    	{
    		$ProgressLog.Text = "Hacken zum Festlegen des Ausgewählten Zeitservers ist nicht gesetzt" | Format-Table -AutoSize | Out-String
    	}
    }
    
    
    Function NTP-Pool_Project()
    {
    	$listBox_NTP_Server.Items.Clear()
    	
    	[void]$listBox_NTP_Server.Items.Add('0.de.pool.ntp.org')
    	[void]$listBox_NTP_Server.Items.Add('1.de.pool.ntp.org')
    	[void]$listBox_NTP_Server.Items.Add('2.de.pool.ntp.org')
    	[void]$listBox_NTP_Server.Items.Add('3.de.pool.ntp.org')
    	
    	$listBox_NTP_Server.Add_SelectedIndexChanged(
    		{
    			switch ($this.SelectedItem)
    			{
    				"0.de.pool.ntp.org"
    				{
    					$Button_Tab03_test.Enabled = $true
    					$Button_Tab03_test.add_click({ test_0.de.pool.ntp.org })
    					$Button_Tab03_start.Enabled = $true
    					$CheckBox_Zeit_set.Enabled = $true
    					$Button_Tab03_start.add_click({ start_0.de.pool.ntp.org })
    				}
    				"1.de.pool.ntp.org"
    				{
    					$Button_Tab03_test.Enabled = $true
    					$Button_Tab03_test.add_click({ test_1.de.pool.ntp.org })
    					$Button_Tab03_start.Enabled = $true
    					$CheckBox_Zeit_set.Enabled = $true
    					$Button_Tab03_start.add_click({ start_1.de.pool.ntp.org })
    				}
    				"2.de.pool.ntp.org"
    				{
    					$Button_Tab03_test.Enabled = $true
    					$Button_Tab03_test.add_click({ test_2.de.pool.ntp.org })
    					$Button_Tab03_start.Enabled = $true
    					$CheckBox_Zeit_set.Enabled = $true
    					$Button_Tab03_start.add_click({ start_2.de.pool.ntp.org })
    				}
    				"3.de.pool.ntp.org"
    				{
    					$Button_Tab03_test.Enabled = $true
    					$Button_Tab03_test.add_click({ test_3.de.pool.ntp.org })
    					$Button_Tab03_start.Enabled = $true
    					$CheckBox_Zeit_set.Enabled = $true
    					$Button_Tab03_start.add_click({ start_3.de.pool.ntp.org })
    				}
    			}
    		})
    }

     

  2. Einen wunderschönen Guten Morgen allerseits,

     

    vorab danke für die ganzen Hilfestellungen.

    Ich denke, ich muss mich noch etwas in die Thematik mit Funktionen einlesen, daher habe ich mir etwas anderes überlegt, wie ich es Realisieren könnte (glaube ich zumindest).

     

    Wenn ich peer button click eine Funktion Aufrufen kann, dann sollte doch Folgendes auch möglich sein oder.

    # ────────── Start Startknopf Funktion-ZeitServer_Test
    		$Starten_Knopf = New-Object System.Windows.Forms.Button 
    		$Starten_Knopf.Location = New-Object System.Drawing.Size(370,65) 
    		$Starten_Knopf.Size = New-Object System.Drawing.Size(90,50) 
    		$Starten_Knopf.Text = "Test Starten" 
    		$Starten_Knopf.Cursor = [System.Windows.Forms.Cursors]::Hand
    		$Starten_Knopf.Add_Click({
    								if ($Eigenen_Zeit_Server.Checked)
    								{
    									$Ausgabe_Ergebniss=w32tm /query /source
    									write-host "Der aktuelle Zeitserver ist: "$Ausgabe_Ergebniss
    								}
    								elseif ($Zeit_Server_Testen.Checked)
    								{
    									$Ausgabe_Ergebniss=w32tm /stripchart /computer:0.de.pool.ntp.org /samples:5 /dataonly
    									write-host "Der Zeitserver Unterschied beträgt: "$Ausgabe_Ergebniss
    								}
    								else
    								{
    									$Ausgabe_Ergebniss="Keine Funktion ansgewaehlt!"
    								}
    							})
    		$Hauptfenster.Controls.Add($Starten_Knopf) 
    	# ────────── Ende Startknopf Funktion-ZeitServer_Test

     

  3. [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    [Windows.Forms.Application]::EnableVisualStyles()
    
    $PS_Symbol   = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command powershell).Path)
    $Schrift = New-Object System.Drawing.Font("Arial",10,[System.Drawing.FontStyle]::Regular)
    
    ########## ──────────────────── Start Bereich-Definitionen ──────────────────── ##########
    
    
    # ─────────────── Start Hauptfenster
    $Hauptfenster    = New-Object System.Windows.Forms.Form
    
    # Ende Hauptfenster ─────────────── #
    
    # ─────────────── Start Hauptmenü
    $Hauptmenue      = New-Object System.Windows.Forms.MenuStrip
    $Statusleiste    = New-Object System.Windows.Forms.StatusStrip
    $statustext      = New-Object System.Windows.Forms.ToolStripStatusLabel
    
    # Ende Hauptmenü ─────────────── #
    
    
    # ─────────────── Start Menüfunktionen
    $menue_Datei     = New-Object System.Windows.Forms.ToolStripMenuItem
    $menue_System    = New-Object System.Windows.Forms.ToolStripMenuItem
    $menue_Netzwerk  = New-Object System.Windows.Forms.ToolStripMenuItem
    $menue_Domain    = New-Object System.Windows.Forms.ToolStripMenuItem
    $menue_Weblinks  = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menüfunktionen ─────────────── #
    
    
    # ─────────────── Start Unterpunkte-Menüfunktionen ─────────────── #
    
    # ────────── Start Menü-Datei
    $menueBeenden           = New-Object System.Windows.Forms.ToolStripMenuItem
    $menueDateisuche        = New-Object System.Windows.Forms.ToolStripMenuItem
    $menueDateiinhalt       = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menü-Datei ────────── #
    
    # ────────── Start Menü-System
    $menueZeitServerTest        = New-Object System.Windows.Forms.ToolStripMenuItem
    $menueZeitServerFestlegen   = New-Object System.Windows.Forms.ToolStripMenuItem
    $menueDISM                  = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menü-System ────────── #
    
    # ────────── Start Menü-Netzwerk
    $menuePing           = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menü-Netzwerk ────────── #
    
    # ────────── Start Menü-Domain
    $menueFSR_DFS_Migration           = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menü-Domain ────────── #
    
    # ────────── Start Menü-Weblinks
    $menueFSR_DFS_Migration           = New-Object System.Windows.Forms.ToolStripMenuItem
    
    # Ende Menü-Weblinks ────────── #
    
    
    # ─────────────── Ende Unterpunkte-Menüfunktionen ─────────────── #
    
    
    # ─────────────── Start Import-Symbole ─────────────── #
    
    $Import = @"
    using System;
    using System.Drawing;
    using System.Runtime.InteropServices;
    
    namespace System
    {
    	public class IconExtractor
    	{
    
    	 public static Icon Extract(string file, int number, bool largeIcon)
    	 {
    	  IntPtr large;
    	  IntPtr small;
    	  ExtractIconEx(file, number, out large, out small, 1);
    	  try
    	  {
    	   return Icon.FromHandle(largeIcon ? large : small);
    	  }
    	  catch
    	  {
    	   return null;
    	  }
    
    	 }
    	 [DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    	 private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
    
    	}
    }
    "@
    
    Add-Type -TypeDefinition $Import -ReferencedAssemblies System.Drawing
    
    # ─────────────── Ende Import-Symbole ─────────────── #
    
    ########## ──────────────────── Ende Bereich-Definitionen ──────────────────── ##########
    
    
    
    
    ########## ──────────────────── Start Bereich-Funktionen ──────────────────── ##########
    
    # ─────────────── Start Hauptfenster Setup
    $Hauptfenster.Icon            = $PS_Symbol
    $Hauptfenster.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::SizableToolWindow
    $Hauptfenster.MainMenuStrip   = $Hauptmenue
    $Hauptfenster.Height          = 600
    $Hauptfenster.Width           = 1000
    $Hauptfenster.StartPosition   = "CenterScreen"
    $Hauptfenster.TopMost         = $true
    $Hauptfenster.Text            = "Probi Tool"
    $Hauptfenster.Font            = $Schrift
    $Hauptfenster.Controls.Add($Hauptmenue)
    
    # Ende Hauptfenster Setup ─────────────── #
    
    # ─────────────── Start Statusbalken
    [void]$Statusleiste.Items.Add($Statustext)
    $Statustext.AutoSize  = $true
    $Statustext.Text      = "Bereit."
    $Hauptfenster.Controls.Add($Statusleiste)
    
    # Ende Statusbalken ─────────────── #
    
    
    ##### ──────────────────── Start Menüleiste Setup ──────────────────── #####
    
    [void]$Hauptfenster.Controls.Add($Hauptmenue)
    
    
    # ─────────────── Menüleiste - Datei
    $menue_Datei.Text = "&Datei"
    [void]$Hauptmenue.Items.Add($menue_Datei)
    
    # ─────────────── Menüleiste - System
    $menue_System.Text = "&System"
    [void]$Hauptmenue.Items.Add($menue_System)
    
    # ─────────────── Menüleiste - Netzwerk
    $menue_Netzwerk.Text = "&Netzwerk"
    [void]$Hauptmenue.Items.Add($menue_Netzwerk)
    
    # ─────────────── Menüleiste - Active-Directory
    $menue_Domain.Text = "&Active-Directory"
    [void]$Hauptmenue.Items.Add($menue_Domain)
    
    # ─────────────── Menüleiste - Active-Directory
    $menue_Weblinks.Text = "&Website-Links"
    [void]$Hauptmenue.Items.Add($menue_Weblinks)
    
    
    ##--------------- Ende Menüleiste Setup ---------------##
    
    
    ########## ──────────────────── Ende Bereich-Funktionen ──────────────────── ##########
    
    
    
    ########## ──────────────────── Start Bereich-Programm ──────────────────── ##########
    
    ##### ──────────────────── Start Datei-Menüleiste ──────────────────── #####
    
    $menueBeenden.Image = [System.IconExtractor]::Extract("shell32.dll", 27, $true)
    $menueBeenden.Text = "&Beenden"
    $menueBeenden.Add_Click({$Hauptfenster.Close()})
    [void]$menue_Datei.DropDownItems.Add($menueBeenden)
    
    ##### ──────────────────── Ende Datei-Menüleiste ──────────────────── #####
    
    
    ##### ──────────────────── Start System-Menüleiste ──────────────────── #####
    
    $menueZeitServerTest.Image = [System.IconExtractor]::Extract("shell32.dll", 265, $true)
    $menueZeitServerTest.Text = "&Zeit Server Testen"
    $menueZeitServerTest.Add_Click({Funktion-ZeitServer_Test})
    [void]$menue_System.DropDownItems.Add($menueZeitServerTest)
    
    ##### ──────────────────── Ende System-Menüleiste ──────────────────── #####
    
    ########## ──────────────────── Ende Bereich-Programm ──────────────────── ##########
    
    
    
    
    ########## ──────────────────── Start Bereich-Funktionen ──────────────────── ##########
    
    
    ##### ──────────────────── Start Funktion-ZeitServer_Test ──────────────────── #####
    function Funktion-ZeitServer_Test
    	{
    	
    	# ────────── Start Funktion ZeitServerStart	
    		function ZeitServerStart {
    
    			if ($Eigenen_Zeit_Server.Checked -eq $true)
    			{$Ausgabe_Ergebniss=w32tm /query /source}
    			
    				if ($Zeit_Server_Testen.Checked -eq $true)
    				{$Ausgabe_Ergebniss=w32tm /stripchart /computer:0.de.pool.ntp.org /samples:5 /dataonly}
    				
    					if ($Zeit_Server_festlegen.Checked -eq $true)
    					{$Ausgabe_Ergebniss=3}
    
    			$ZeitServer_Test_Ausgabe=$Ausgabe_Ergebniss | fl | out-string;
    			$Ausgabe_Feld.text=$ZeitServer_Test_Ausgabe
                         }
    	# ────────── Ende Funktion ZeitServerStart
    					 
    					 
    	# ────────── Start Auswahlkasten				 
    		$AuswahlBox = New-Object System.Windows.Forms.GroupBox
    		$AuswahlBox.Location = New-Object System.Drawing.Size(40,50) 
    		$AuswahlBox.size = New-Object System.Drawing.Size(320,140) 
    		$AuswahlBox.text = "Auswahl-Funktionen" 
    		$Hauptfenster.Controls.Add($AuswahlBox) 
    	# ────────── Ende Auswahlkasten
    
    
    	# ────────── Start Auswahlschalter Funktion-ZeitServer_Test
    		$Eigenen_Zeit_Server = New-Object System.Windows.Forms.RadioButton
    		$Eigenen_Zeit_Server.Location = new-object System.Drawing.Point(25,30)
    		$Eigenen_Zeit_Server.size = New-Object System.Drawing.Size(260,20)
    		$Eigenen_Zeit_Server.Checked = $true
    		$Eigenen_Zeit_Server.Text = "Eigenen Zeit-Server ermitteln"
    		$AuswahlBox.Controls.Add($Eigenen_Zeit_Server)
    		
    		$Zeit_Server_Testen = New-Object System.Windows.Forms.RadioButton
    		$Zeit_Server_Testen.Location = new-object System.Drawing.Point(25,65)
    		$Zeit_Server_Testen.size = New-Object System.Drawing.Size(260,20)
    		$Zeit_Server_Testen.Text = "Test des Zeit-Servers Starten"
    		$AuswahlBox.Controls.Add($Zeit_Server_Testen)
    		
    		$Zeit_Server_festlegen = New-Object System.Windows.Forms.RadioButton
    		$Zeit_Server_festlegen.Location = new-object System.Drawing.Point(25,100)
    		$Zeit_Server_festlegen.size = New-Object System.Drawing.Size(260,20)
    		$Zeit_Server_festlegen.Text = "Neuen Zeit-Server festlegen"
    		$AuswahlBox.Controls.Add($Zeit_Server_festlegen)
    	# ────────── Ende Auswahlschalter Funktion-ZeitServer_Test
    
    
    	# ────────── Start Startknopf Funktion-ZeitServer_Test
    		$Starten_Knopf = New-Object System.Windows.Forms.Button 
    		$Starten_Knopf.Location = New-Object System.Drawing.Size(370,65) 
    		$Starten_Knopf.Size = New-Object System.Drawing.Size(90,50) 
    		$Starten_Knopf.Text = "Test Starten" 
    		$Starten_Knopf.Add_Click({ZeitServerStart}) 
    		$Starten_Knopf.Cursor = [System.Windows.Forms.Cursors]::Hand
    		$Hauptfenster.Controls.Add($Starten_Knopf) 
    	# ────────── Ende Startknopf Funktion-ZeitServer_Test
    
    
    	# ────────── Start Ausgabe Funktion-ZeitServer_Test
    		$Ausgabe_Feld = New-Object System.Windows.Forms.TextBox 
    		$Ausgabe_Feld.Location = New-Object System.Drawing.Size(40,195) 
    		$Ausgabe_Feld.Size = New-Object System.Drawing.Size(320,140) 
    		$Ausgabe_Feld.MultiLine = $True 
    	# ────────── Ende Ausgabe Funktion-ZeitServer_Test
    
    
    		$Ausgabe_Feld.ScrollBars = "Vertical" 
    		$Hauptfenster.Controls.Add($Ausgabe_Feld) 
    	}
    ##### ──────────────────── Ende Funktion-ZeitServer_Test ──────────────────── #####
    	
    ########## ──────────────────── Ende Bereich-Funktionen ──────────────────── ##########
    [void] $Hauptfenster.ShowDialog()

     

    Wenn ich die Funktion "ZeitServerStart" ausserhalb von "Funktion-ZeitServer_Test" habe bekomme ich die Meldung das er mit "$Ausgabe_Feld.text=$ZeitServer_Test_Ausgabe" nichts anfangen kann.

  4. Hallo allerseits,

     

    ich habe mir überlegt, eine gui zu erstellen, die ich immer wieder erweitern möchte, wenn Zeit und Forscherdrang besteht.

    Ich versuche, alles irgendwie nachzuvollziehen, anzupassen etc.

     

    Ich bin jetzt auf ein Problem gestoßen, das ich nicht nachvollziehen kann.

    Die Zeile "$Starten_Knopf.Add_Click({ZeitServerStart})" wird als unbekanntes cmdlet angegeben, kann mir jemand sagen, wo ich einen Fehler habe?

     

    Zitat

    function Funktion-ZeitServer_Test
        {
        
        # ────────── Start Funktion ZeitServerStart    
            function ZeitServerStart {

                if ($Eigenen_Zeit_Server.Checked -eq $true)
                {$Ausgabe_Ergebniss=w32tm /query /source}
                
                    if ($Zeit_Server_Testen.Checked -eq $true)
                    {$Ausgabe_Ergebniss=w32tm /stripchart /computer:0.de.pool.ntp.org /samples:5 /dataonly}
                    
                        if ($Zeit_Server_festlegen.Checked -eq $true)
                        {$Ausgabe_Ergebniss=3}

                $ZeitServer_Test_Ausgabe=$Ausgabe_Ergebniss | fl | out-string;
                $Ausgabe_Feld.text=$ZeitServer_Test_Ausgabe
                         }
        # ────────── Ende Funktion ZeitServerStart
                        
                        
        # ────────── Start Auswahlkasten                
            $AuswahlBox = New-Object System.Windows.Forms.GroupBox
            $AuswahlBox.Location = New-Object System.Drawing.Size(40,50)
            $AuswahlBox.size = New-Object System.Drawing.Size(320,140)
            $AuswahlBox.text = "Auswahl-Funktionen"
            $Hauptfenster.Controls.Add($AuswahlBox)
        # ────────── Ende Auswahlkasten


        # ────────── Start Auswahlschalter Funktion-ZeitServer_Test
            $Eigenen_Zeit_Server = New-Object System.Windows.Forms.RadioButton
            $Eigenen_Zeit_Server.Location = new-object System.Drawing.Point(25,30)
            $Eigenen_Zeit_Server.size = New-Object System.Drawing.Size(260,20)
            $Eigenen_Zeit_Server.Checked = $true
            $Eigenen_Zeit_Server.Text = "Eigenen Zeit-Server ermitteln"
            $AuswahlBox.Controls.Add($Eigenen_Zeit_Server)
            
            $Zeit_Server_Testen = New-Object System.Windows.Forms.RadioButton
            $Zeit_Server_Testen.Location = new-object System.Drawing.Point(25,65)
            $Zeit_Server_Testen.size = New-Object System.Drawing.Size(260,20)
            $Zeit_Server_Testen.Text = "Test des Zeit-Servers Starten"
            $AuswahlBox.Controls.Add($Zeit_Server_Testen)
            
            $Zeit_Server_festlegen = New-Object System.Windows.Forms.RadioButton
            $Zeit_Server_festlegen.Location = new-object System.Drawing.Point(25,100)
            $Zeit_Server_festlegen.size = New-Object System.Drawing.Size(260,20)
            $Zeit_Server_festlegen.Text = "Neuen Zeit-Server festlegen"
            $AuswahlBox.Controls.Add($Zeit_Server_festlegen)
        # ────────── Ende Auswahlschalter Funktion-ZeitServer_Test


        # ────────── Start Startknopf Funktion-ZeitServer_Test
            $Starten_Knopf = New-Object System.Windows.Forms.Button
            $Starten_Knopf.Location = New-Object System.Drawing.Size(370,45)
            $Starten_Knopf.Size = New-Object System.Drawing.Size(40,40)
            $Starten_Knopf.Text = "Test Starten"
            $Starten_Knopf.Add_Click({ZeitServerStart})
            $Starten_Knopf.Cursor = [System.Windows.Forms.Cursors]::Hand
            $Hauptfenster.Controls.Add($Starten_Knopf)
        # ────────── Ende Startknopf Funktion-ZeitServer_Test


        # ────────── Start Ausgabe Funktion-ZeitServer_Test
            $Ausgabe_Feld = New-Object System.Windows.Forms.TextBox
            $Ausgabe_Feld.Location = New-Object System.Drawing.Size(40,195)
            $Ausgabe_Feld.Size = New-Object System.Drawing.Size(320,140)
            $Ausgabe_Feld.MultiLine = $True
        # ────────── Ende Ausgabe Funktion-ZeitServer_Test


            $Ausgabe_Feld.ScrollBars = "Vertical"
            $Hauptfenster.Controls.Add($Ausgabe_Feld)
        }

     

  5. Guten Morgen allerseits,

     

    ich habe es gefunden. Bin heute Morgen noch mal etwas stressfreier an die ganze Sache herangegangen und habe noch mal alles Relevante überprüft.

    In der AD bei den NTDS-Einstellungen habe ich noch ein gesetzten Hacken ausfindig machen können, obwohl ich gestern 100%ig bei denn Standort-Diensten diesen Hacken raus genommen habe.

    Wie auch immer, ntdsutil hat anschließend funktioniert und der Zombieserver ist nun raus.

     

    Danke noch mal an alle, die tatkräftig mitgeholfen haben.

     

     

    Gruß Mario

    • Danke 1
  6. PS C:\Users\Administrator.AHLSA-DE> ntdsutil
    C:\Windows\system32\ntdsutil.exe: metadata cleanup
    metadata cleanup: connections
    server connections: connect to server Server-AAAA
    Bindung mit "Server-AAAA" ...
    Eine Verbindung mit "Server-AAAA" wurde unter Verwendung der Benutzerinformationen des lokal angemeldeten Benutzers wur
    de hergestellt.
    server connections: q
    metadata cleanup: select operation target
    select operation target: list domains
    1 Domäne(n) gefunden
    0 - DC=12345,DC=678
    select operation target: select domain 0
    Kein aktueller Standort
    Domäne - DC=12345,DC=678
    Kein aktueller Server
    Kein aktueller Namenskontext
    select operation target: list sites
    1 Standort(e) gefunden
    0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    select operation target: select site 0
    Standort - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    Domäne - DC=12345,DC=678
    Kein aktueller Server
    Kein aktueller Namenskontext
    select operation target: list servers in site
    4 Server gefunden
    0 - CN=SERVER-XXXX,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    1 - CN=SERVER-AAAA,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    2 - CN=SERVER-BBBB,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    3 - CN=SERVER-CCCC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    select operation target: select server 0
    Standort - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
    Domäne - DC=12345,DC=678
    Server - CN=SERVER-XXXX,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=12345,DC=678
            DSA-Objekt - CN=NTDS Settings,CN=SERVER-AHLSA,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC
    =12345,DC=678
            DNS-Hostname - SERVER-XXXX.12345.678
            Computerobjekt - CN=SERVER-XXX,OU=Domain Controllers,DC=12345,DC=678
    Kein aktueller Namenskontext
    select operation target: q
    metadata cleanup: remove selected server
    Die FSMO-Rollen werden vom ausgewählten Server übertragen bzw. übernommen.
    DsRemoveDsServerW-Fehler 0x5(Zugriff verweigert)
    metadata cleanup: 

     

  7. 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

     

  8. Hallo mwiederkehr,

     

    habe nun Folgendes ausprobiert

    Zitat

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

     

    $Mail_Absender = "Admin@ccccc"
          $Mail_Empfaenger = "1234@5678.de"
          $Mail_Betreff = "HyperV-Replica Alarm"
          $Mail_Body = "(gc $Info_Datei | Out-String)"
          $Mail_Server = "ddddd"
         Send-MailMessage –To "$Mail_Empfaenger" –Subject $Mail_Betreff –Body $Mail_Body –SmtpServer "$Mail_Server" –From "$Mail_Absender" -Port 25 -Credential $cred
        

    Ich habe extra "bbbbb" in unseren Mailserver angelegt, der kein SSL benötigt aber das Ergebnis ist folgendermaßen

    Zitat

    Send-MailMessage : Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.
    In Zeile:12 Zeichen:6
    +      Send-MailMessage –To "$Mail_Empfaenger" –Subject $Mail_Betreff – ...
    +      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException
        + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

    So recht habe ich noch keine Vermutung was da in den Organisierten Wiederstand getreten ist.

  9. Einen wunderschönen guten Morgen,

     

    ich habe feststellen müssen, dass es einige Probleme mit dem Senden der Mail gibt, und habe daher das Skript noch mal komplett überarbeitet.

    Es wäre super wenn die Experten unter euch noch mal drüber schauen können, gerade der Teil mit dem Mailversand ist Neuland für mich, da ich mit Objekterstellung noch nichts gemacht habe.

     

    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
    $CredUser = "_____"
    $CredPassword = ConvertTo-SecureString "_____" -AsPlainText -Force

     

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

    $Datum | Out-File $Log_Datei -append

    ##Skript Start
     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 $Info_Datei
         $Serverbezeichnung = "Der Replikationstatus von Server: $name auf $MailBetreff_Name@$MailBetreff_Domain ist auf WARNUNG gewechselt!" | Out-File $Info_Datei -append
         Get-VMReplication | Out-File $Info_Datei -append
         Get-PSDrive -PSProvider FileSystem | Out-File $Info_Datei -append
         GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
    ##Einstellungen zum Sender der Mail
          $Mail_Absender = "_____@_____"
          $Mail_Empfaenger = "_____@_____e"
          $Mail_Betreff = "HyperV-Replica Warnung"
          $Mail_Body = "(gc $Info_Datei | Out-String)"
          $Mail_Server = "_____"
          $SMTPClient = New-Object Net.Mail.SmtpClient($Mail_Server, 587)
          $SMTPClient.EnableSsl = $true
          $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword);
          $SMTPClient.Send($Mail_Absender, $Mail_Empfaenger, $Mail_Betreff, $Mail_Body)
         Send-MailMessage –To "$Mail_Empfaenger" –Subject $Mail_Betreff –Body $Mail_Body –SmtpServer "$Mail_Server" –From "$Mail_Absender"
         "$name  -  Replikation meldet Warnung!" | Out-File $Log_Datei -append
         Remove-Item -Path "C:\Powershell\Info_Datei.txt"
        }
       elseif ($vm.Health -eq "Critical") # <-- Schleife für Replikationen mit dem Status Kritisch!
        {
         New-Item $Info_Datei
         $Serverbezeichnung = "Der Replikationstatus von Server: $name auf $MailBetreff_Name@$MailBetreff_Domain ist auf KRITISCH gewechselt!" | Out-File $Info_Datei -append
         Get-VMReplication | Out-File $Info_Datei -append
         Get-PSDrive -PSProvider FileSystem | Out-File $Info_Datei -append
         GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
    ##Einstellungen zum Sender der Mail
          $Mail_Absender = "_____@_____"
          $Mail_Empfaenger = "_____@_____"
          $Mail_Betreff = "HyperV-Replica Alarm"
          $Mail_Body = "(gc $Info_Datei | Out-String)"
          $Mail_Server = "_____"
          $SMTPClient = New-Object Net.Mail.SmtpClient($Mail_Server, 587)
          $SMTPClient.EnableSsl = $true
          $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword);
          $SMTPClient.Send($Mail_Absender, $Mail_Empfaenger, $Mail_Betreff, $Mail_Body)
         Send-MailMessage –To "$Mail_Empfaenger" –Subject $Mail_Betreff –Body $Mail_Body –SmtpServer "$Mail_Server" –From "$Mail_Absender"
         "$name  -  Kritischer Replikationsstatus!" | Out-File $Log_Datei -append
         Remove-Item -Path "C:\Powershell\Info_Datei.txt"
        }
    }
    "     " | Out-File $Log_Datei -append
    " ----------------------------------------" | Out-File $Log_Datei -append

     

    Wohltuende Grüsse

    Mario

  10. Hallo alle zusammen,

     

    da mir hier auch tatkräftig geholfen wurde, möchte ich das fertige Script hier zur Verfügung stellen.

     

    Zitat

    $MailBetreff_Name = (Get-WmiObject Win32_ComputerSystem).Name
    $MailBetreff_Domain = (Get-WmiObject Win32_ComputerSystem).Domain
    $Mail_Absender = "Admin@____________.de"

    $Mail_Server = "____________"

    $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

     

     $Datum | Out-File $Log_Datei -append
     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")
        {
         New-Item $Info_Datei
         $Serverbezeichnung = "Der Replikationstatus von Server: $MailBetreff_Name@$MailBetreff_Domain ist auf WARNUNG gewechselt!" | Out-File $Info_Datei -append
         Get-VMReplication | Out-File $Info_Datei -append
         Get-PSDrive | Out-File $Info_Datei -append
         GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
         Send-MailMessage –To "______@______.de" –Subject "HyperV-Replica Warnung" –Body (gc $Info_Datei | Out-String) –SmtpServer "$Mail_Server" –From "$Mail_Absender"
         "$name  -  Replikation meldet Warnung!" | Out-File $Log_Datei -append
        }
       elseif ($vm.Health -eq "Critical")
        {
         New-Item $Info_Datei
         $Serverbezeichnung = "Der Replikationstatus von Server: $MailBetreff_Name@$MailBetreff_Domain ist auf KRITISCH gewechselt!" | Out-File $Info_Datei -append
         Get-VMReplication | Out-File $Info_Datei -append
         Get-PSDrive | Out-File $Info_Datei -append
         GCI -Path "D:\VM\$name\Virtual Hard Disks" -Recurse -Force | Out-File $Info_Datei -append
         Send-MailMessage –To "______@______.de" –Subject "HyperV-Replica Alarm" –Body (gc $Info_Datei | Out-String) –SmtpServer "$Mail_Server" –From "$Mail_Absender"
         "$name  -  Kritischer Replikationsstatus!" | Out-File $Log_Datei -append
        }
    }
    "     " | Out-File $Log_Datei -append
    " ----------------------------------------" | Out-File $Log_Datei -append

     

    • Danke 3
×
×
  • Neu erstellen...