AADConnect synchronisation manuell starten oder erzwingen

Dies ist wieder so ein „Schnipsel den man ständig braucht“ Beitrag.

Der ActiveDirectory Admin möchte nach einer Objektänderung diese „sofort“ ins Azure AD synchronisiert wissen und nicht die üblichen 30 Minuten warten.

Synchronisation starten

An der PowerShell auf dem AADConnect-Server ist das in zwei Zeilen (ausgeführt als Admin) erledigt:

Start-ADSyncSyncCycle

Gegebenenfalls ist vorher noch der Import des ADSync Moduls erforderlich (sollte ab PowerShell 3.0 aber automatisch erfolgen.)

Das Cmdlet stößt den Sync nur an, daher sollte die Rückmeldung Success recht schnell erfolgen.

Der eigentliche Prozess dauert (je nach Objekt- und Änderungsmenge) etwas länger, kann aber einfach im Synchronization Service überwacht werden. (Auch ersichtlich an der CPU-Last der Maschine 😉)

Neue Vollsynchronisation starten

Das Cmdlet startet standardmäßig nur einen „Delta“ Sync (-PolicyType Delta). In seltenen Fällen ist allerdings eine neue „Vollsynchronisation“ notwendig. Auch diese lässt sich „sofort“ via PowerShell starten:

Start-ADSyncSyncCycle -PolicyType Initial 
Hinweis:

Dieses Vorgehen sollte ausschließlich als manuelle „Ausnahme“ des herkömmlichen Intervalls dienen und sollte nicht verwendet werden um automatisiert das „AllowedSyncCycleInterval“ des AADConnect schedulers zu unterschreiten. Dies könnte bei zu häufiger verwendung dazu führen, dass Microsoft weitere Sync-Vorgänge vorübergehend nur in *noch größeren* Abständen zulässt um einer Überlastung der AAD Dienste vorzubeugen.

TLS 1.2 via PowerShell aktivieren

TLS-Protokoll (Transport Layer Security) liegt in der Version 1.2 vor. TLS hat zwar schon viele Iterationen hinter sich, wobei Version 1.2 in RFC 5246 definiert ist, aber die meisten Programme heute setzen mindestens TLS 1.2 voraus. Vor allem PowerShell Scripts und AADConnect (Azure AD Connect) benötigen ein .NET Framework 4, bei dem TLS 1.2 explizit aktiviert (und als Minimum erzwungen) ist.

Unter Server 2016 und 2019 geht das natürlich via Registry-Gehacke oder für faule Admins mit diesem simplen PowerShell-Script (ausgeführt als Administrator).

New-Item 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319' -Force

New-Item 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Force

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force

New-ItemProperty -path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319' -name 'SystemDefaultTlsVersions' -value '1' -PropertyType 'DWord' -Force

    New-ItemProperty -path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force

New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -name 'SystemDefaultTlsVersions' -value '1' -PropertyType 'DWord' -Force

New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force
    
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '1' -PropertyType 'DWord' -Force
    
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force | Out-Null
    
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
    
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value '1' -PropertyType 'DWord' -Force
    

SSH auf HPE OfficeConnect 1920 Switches einschalten

Die „Web Managed“ Smart Switches der OfficeConnect 1920er Serie die die Marketing-Bezeichnung „advanced Smart-Managed“ tragen, sprechen by Default kein SSH und benötigen einen Webbrowser. Dieser darf außerdem kein Chrome sein, weil die Eingabemasken sonst nicht zuverlässig funktionieren.

Das Web GUI ist zwar ansonten halbwegs brauchbar, aber ein Admin würde sich viel eher über ein ganz normales CLI via SSH freuen. Ob die Aktivierung des SSH-Servers einen Einfluss auf die Garantie hat, liegt außerhalb des Zieles dieses Artikels 😉

SSH auf OfficeConnect 1920 aktivieren

1. Konfigurationsdatei herunterladen: Device > File Management > „flash:/startup.cfg“ anhaken > Download File

2. Konfigurationsdatei „startup.cfg“ bearbeiten und telnet server enable zur Konfiguration hinzufügen und speichern

3. Diese „neue“ Startup Config hochladen: Device > File Management > Upload File > Flash > Durchsuchen … > Upload (und bestehende startup.cfg überschreiben)

4. Switch neu starten Device > Device Maintenance > Reboot > „Check whether the current configuration is saved“ ausschalten > Reboot

5. Telnet-Verbindung zum Switch öffnen (ich nutze hier PuTTY) und mit den bestehenden Admin-Daten darin anmelden.

6. SSH via CLI einschalten:

enable
configure
crypto key generate rsa
crypto key generate dsa
exit
ip ssh server enable
ip ssh protocol 2
write memory confirm
quit

7. Switch neu starten

8. Telnet abschalten, dazu wieder per SSH anmelden und Telnet deaktivieren

enable
no ip telnet server enable
write memory confirm
quit

Windows DHCP Server per PowerShell migrieren

Auf dem „neuen“ Server muss die DHCP-Rolle installiert sein, alle Schritte werden direkt auf der neuen Maschine durchgeführt. Die Autorisierung in der Domäne braucht noch nicht durchgeführt werden (ist aber auch nicht schlimm).

DHCP Konfiguration exportieren

Die collständige DHCP-Konfiguration einschliesslich aller Bereiche, leases, Severoptionen und so weiter lässt sich in einem Rutsch in einen vorhandenen Pfad exportieren:

Export-DhcpServer -ComputerName <ALTERSERVER> -Leases -File C:\Temp\dhcp-export.xml -verbose
DHCP Server migrieren – Export der Konfiguration

DHCP Konfiguration importieren

Es kann direkt wieder importier werden. Der BackupPath ist Pflicht, muss angegeben werden und enthält hinterher die vorhergehende Konfiguration (also ‚alte‘) des Servers

Import-DhcpServer -ComputerName <NEUERSERVER> -Leases -File C:\Temp\dhcp-export.xml -BackupPath C:\temp -Verbose

Die Ausgabe ist deutlich länger, aber am Ende steht der erfolgreiche Importdes DHCP Servers.

DHCP Server autorisieren, alte DHCP Autorisierung aufheben

Der neue Server sollte sich beim Import automatisch autorisiert haben, wenn nicht muss das nachgeholt werden – sonst verteilt der DHCP keine IP-Adressen.

Die Autorisierung des alten DHCP kann dann auch im gleich Zug zurückgenommen werden, natürlich komfortabel an der PowerShell:

Remove-DhcpServerInDC -DnsName <ALTERSERVER-FQDN>

Ein neuer Server kann genauso einfach als „autorisiert“ hinzugefügt werden:

Add-DhcpServerInDC -DnsName <ALTERSERVER-FQDN>

VMware vSphere PowerCLI (PowerShell) Portgruppe mit VLAN hinzufügen

Da virtuelle Standard Switches (vSwitches) Hostsache sind und nicht via vCenter „verteilt“ werden können, ist es sinnvoll so eine Aufgabe für mehrere Hosts zu automatisieren. Dank PowerCLI ist so ein Rollout aber verhältnismäßig schnell erledigt.

Neue Portgruppe mit VLAN (tagged) zu vSwitch0 auf einem ESXi hinzufügen

Das PowerCLI importieren und mit dem vCenter verbinden:

PS C:\> Import-Module VMware.PowerCLI
PS C:\> Connect-VIServer vcenter.example.fqdn

Dann kann man direkt die Portgruppe hinzufügen

Get-VMHost -name <ESXHOST> | Get-VirtualSwitch -Name <vSWITCH> | New-VirtualPortGroup -name <PORTGRUPPEN-NAME> -VLanId <ID>

Beispiel: Auf Host „esx15“ Portgruppe „vlan_11“ mit dem vlan tag „11“ zum „vSwitch0“ hinzufügen:

Get-VMHost -name esx15 | Get-VirtualSwitch -Name vSwitch0 | New-VirtualPortGroup -name vlan_11 -VLanId 11

Alle ESXi Hosts im Cluster auf einmal

Alle Host im Cluster kann man mit einer einfachen Schleife erreichen:

$VMHosts = Get-cluster <CLUSTER-NAME> | Get-VMHost

foreach ($VMHost in $VMHosts) {

    Get-VMHost -name $VMhost | Get-VirtualSwitch -name vSwitch0 | New-VirtualPortGroup -name <PORTGRUPPEN-NAME> -VLanId <ID>

}