Wake-on-LAN mit PowerShell: So weckst du deinen Server oder PC auf

Futuristische Darstellung von Wake-on-LAN und PowerShell

In diesem Artikel erkläre ich, wie du ein PowerShell-Skript nutzen kannst, um einen QNAP-Server (oder jedes andere Wake-on-LAN-fähige Gerät) im Netzwerk aufzuwecken. Dabei wird ein sogenanntes Magic Packet gesendet, das den Server aus dem Ruhezustand holt.

Voraussetzungen

  • Wake-on-LAN muss im BIOS/UEFI und in den Netzwerkeinstellungen des Geräts aktiviert sein.
  • Das Gerät und der Rechner, von dem aus das Skript ausgeführt wird, müssen sich im selben Netzwerk befinden.
  • PowerShell (ab Version 3.0) sollte installiert sein.

Das PowerShell-Skript

Das folgende Skript verwendet die MAC-Adresse des QNAP-Servers, um ein Magic Packet an die Broadcast-Adresse des Netzwerks zu senden. Dies ist der entscheidende Schritt, um das Gerät aufzuwecken.

# Variablen für die IP-Adresse, MAC-Adresse und Port
$IpAddress = "192.168.1.10"
$MacAddress = "24:5e:00:01:02:b7"
$BroadcastAddress = "192.168.1.255" # Standard-Broadcast-Adresse im Subnetz
$Port = 9 # Standard-Wake-On-LAN-Port

# Funktion, um das Wake-On-LAN Magic Packet zu senden
function Send-WakeOnLan {
    param (
        [string]$MacAddress,
        [string]$BroadcastAddress,
        [int]$Port
    )

    # MAC-Adresse in ein Byte-Array umwandeln
    $MacBytes = $MacAddress -split "[:-]" | ForEach-Object { [byte]("0x$_") }

    # Magic Packet erstellen (6x 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse)
    $MagicPacket = @([byte]0xFF) * 6 + ($MacBytes * 16)

    # Magic Packet via UDP senden
    $UdpClient = New-Object System.Net.Sockets.UdpClient
    $UdpClient.EnableBroadcast = $true
    $Endpoint = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Parse($BroadcastAddress), $Port)
    $UdpClient.Send($MagicPacket, $MagicPacket.Length, $Endpoint)
    $UdpClient.Close()

    Write-Output "Wake-On-LAN-Paket wurde an $MacAddress über ${BroadcastAddress}:${Port} gesendet."
}

# Wake-On-LAN senden
Send-WakeOnLan -MacAddress $MacAddress -BroadcastAddress $BroadcastAddress -Port $Port

Wie funktioniert das Skript?

Das Skript besteht aus zwei Teilen: der Definition der Funktion Send-WakeOnLan und dem Aufruf dieser Funktion mit den festgelegten Variablen.

  • MAC-Adresse: Die MAC-Adresse des Zielgeräts wird benötigt, um das Magic Packet korrekt zu adressieren.
  • Broadcast-Adresse: Die Broadcast-Adresse wird verwendet, um sicherzustellen, dass das Magic Packet alle Geräte im Netzwerk erreicht.
  • Port: Standardmäßig wird Port 9 verwendet, aber einige Geräte können auch Port 7 nutzen.
  • Magic Packet: Es handelt sich um eine spezielle Nachricht, die 6-mal 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse enthält.

Nutzung

Speichere das Skript als .ps1-Datei, zum Beispiel WakeOnLan.ps1. Öffne dann PowerShell mit Administratorrechten und führe das Skript mit folgendem Befehl aus:

.\WakeOnLan.ps1

Wenn alles korrekt eingerichtet ist, wird das Magic Packet gesendet, und dein QNAP-Server sollte starten.

Fazit

Mit diesem Skript kannst du deinen QNAP-Server (oder andere Geräte) bequem per PowerShell aufwecken. Wake-on-LAN ist eine praktische Möglichkeit, Geräte effizient zu verwalten, ohne sie ständig laufen lassen zu müssen.

Hast du Fragen oder Anregungen? Schreibe sie gerne in die Kommentare!

NGINX Reverseproxy für Weiterleitung auf anderes HTTPS-Ziel

Ich hatte konkret die Aufgabe, verschiedene Webserver unter einer externen IP-Adresse erreichbar zu machen. Die Webserver verfügen bereits über ein eigenes HTTPS-Zertifikat – ich muss mich als nicht noch um Zertifikate wie Let’sEncrypt etc. kümmern.
Im konkreten Beispiel habe ich für diesen Zweck ein einfaches Ubuntu Server 18.04 LTS aufgesetzt und in meiner DMZ aufgestellt mit dem Ziel, dort nichts weiter als diesen konkreten NGINX darauf laufen zu lassen.

Nach der Installation von Linux erfolgen wie immer die üblichen Befehle zum Aktualisieren des Betriebssystems

sudo apt update
sudo apt full-upgrade

NGINX wird mit einer weiteren einfachen APT-Zeile angestoßen:

sudo apt-get install nginx

Um zu konfigurieren, dass NGINX automatisch zum Systemstart mitgestartet wird, geben wir folgenden Befehl ein:

sudo /etc/init.d/nginx start

Jetzt könnt ihr den NGINX-Webserver einfach testen durch Aufrufen der entsprechenden IP-Adresse im Browser. In meinem konkreten Fall war das die nachfolgende IP-Adresse

http://192.168.140.16

Ziel ist es in diesem konkreten Fall, eine Weiterleitung von HTTPS auf HTTPS zu konfigurieren.
Dafür muss das SSL-Zertifikat vorhanden sein und in die folgenden Dateien kopiert werden:
public Key:
sudo vim /etc/nginx/cert.crt
Private Key
sudo vim /etc/nginx/cert.key

Anschließend ist es schon soweit – ihr könnt die Konfiguration des NGINX öffnen und die Proxy-PASS-Konfig einfügen. In meinem konkreten Beispiel sah das so aus

sudo vim /etc/nginx/sites-enabled/default
server {

    listen 443 ssl;
    server_name subdomain.domain.de;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/jenkins.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          https://192.168.140.10:443;
      proxy_read_timeout  90;

      proxy_redirect      https://192.168.140.10:443 https://git.gustini.de;
    }
  }

Abschließend noch ein Neustart von NGINX

 sudo service nginx restart

Anschließend hat die Lösung bei mir schon funktioniert!

Postfächer in Exchange 2013 lassen sich nicht löschen

Nach der Migration von Exchange 2010 auf 2013 viel mir das Phänomen auf, dass ich Postfächer von ehemaligen Mitarbeitern nicht mehr löschen kann.
Ein Griff zu Google brachte mich glücklicherweise zur Lösung:

https://wiki.dawico.de/display/WIKI/Fehler+beim+Loeschen+eines+Exchange+Postfaches

Die Vererbung des AD-Users hat sich abgeschaltet, weil die User erhöhte Rechte bekommen haben. Im konkreten Fall waren sie „Druck-Operatoren“, wodurch die Vererbung des AD-Objektes automatisch abgeschaltet wurde.

Die Vorgehensweise für die Lösung findet ihr in oben genannten Link!

Vcenter Server Phase 2 Installation stürzt ab mit Meldung „Failed to connect to SSO“

Vmware VCenter Server 6.5 / Failed to connect to SSO

Für einen Kunden habe ich einen neuen Vcenter Server (VCSA) aufgesetzt und kämpfte mit dem Problem, dass die Phase 2 der Installation der Installation fehlschlug mit der Meldung:

„Failed to connect to SSO“

Ursache waren zwei Probleme:

  1. Der Domain Name des VCenter Servers ließ sich nicht per DNS auflösen –> Im verantwortlichen Domain Controller habe ich im DNS einen A-Record angelegt, so dass sich das FQDN ohne Probleme mit nslookup auflösen ließ
  2. Der VMware Identity Management-Dienst ließ sich laut Fehlerprotokoll nicht starten

vmware-stsd[1762]: has address 127.0.0.1. Request for http://localhost:7080/afd failed after 10 seconds. Status: /usr/bin/curl status. Response: 000. Host: localhost has address 127.0.0.1. Request for http://localhost:7080/afd failed after 10 seconds. Status: /usr/bin/curl status. Response: 000.

Lösen ließ sich das Problem dank des Blog-Beitrags von Christian Stankowic mit dem folgenden Workarround

Nach der Ersten Phase der Installation empfiehlt es sich, einen Snapshot an der VCSA und dem installierenden Client zu machen, um nicht nach jedem Fehlversuch wieder von vorne anzufangen. Anschließend wird der zweite Schritt durch Ausfüllen der Formularfelder vorbereitet. Bevor Phase zwei der Installation gestartet wird, muss jedoch noch ein Schritt unternommen werden:

In der Konsole der VCSA habe ich mit Alt+F3 in die Konsole gewechselt und mich nach erfolgreichen Login mit der Shell verbunden:

> shell
# echo "::1 localhost.localdom localhost" >> /etc/hosts

Anschließend hat sich der VCSA-Server sich selbst mit „localhost“ wieder erfolgreich aufgelöst und die Installation ist  erfolgreich durchgelaufen.

Exchange-Postfächer in PST exportieren – Powershell

Im Administrationsalltag stellt sich ab und an die Frage, wie man Postfächer ohne Verwendung von Outlook direkt in PST-Dateien exportieren kann.

  1.  Die Berechtigung für den Export muss vergeben werden:
    New-ManagementRoleAssignment –Role „Mailbox Import Export“ –User „administrator“
  2. Der Exportbefehl muss eingegeben werden
    New-MailboxExportRequest -Mailbox "Postfach Name" -FilePath "\\UNC_PFAD\ZUM\SPEICHERZIEL\pf.pst"

Nach Abschluss des Exports ist es noch sinnvoll, alle abgeschlossenen Requests zu entfernen:

Get-MailboxImportRequest -Status Completed | Remove-MailboxImportRequest