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>

}

Zertifikate im Windows Zertifikatsspeicher umbenennen

Bis vor kurzen wusste ich nicht: Man kann den Anzeigename eines Zertifikats im Zertifikatsspeicher ändern. Die ‚certmgr‘ Konsole lässt das zwar nicht zu, aber an der PowerShell ist das durchaus möglich.

Das XBL Zertifikat aus diesem Beispiel soll umbenannt werden.

1. Den Fingerprint (Thumbprint) des Zertifikates ermitteln:

Get-ChildItem -path cert:\LocalMachine\my | Select Subject,Thumbprint,Friendlyname

2. Thumbprint von oben kopieren und den FriendlyName davon direkt ändern:

(Get-ChildItem -Path Cert:\LocalMachine\My\<THUMBPRINT>).FriendlyName = ‘Neuer Name’

PowerShell Ordnergröße anzeigen (Ausgabe ähnlich ‚du‘ unter Linux)

Es ist überraschend umständlich, die Größe eines Ordners an der PowerShell herauszufinden. Man muss dazu GCI filtern, nur einen Ordner angeben (oder eine zsätzliche Schleife bauen), -recursive durch Unterordner laufen und erhält dann fiese Fehlermeldungen wenn man Symlinks oder NTFS-Streams verwendet.

Ich bin bei einer solchen Aufgabe über das PowerShell Modul PSFoldersize gestolpert. Nach der Installation des Moduls aus der PowerShell Gallery mit:

PS C:\> Install-Module PSFolderSize

… vereinfacht sich das zu einen einzelnen Aufruf:

PS C:\> Install-Module PSFolderSize

Vielen Dank gngrninja 👍

Veeam Backup 365 Failed, wegen gelöschtem Benutzer „Failed to process site: https://TENANT-my.sharepoint.com/personal/USER“

Löscht man in Microsoft 365 einen Benutzer mit persönlicher Sharepoint-Site, erhält man in Veeam Backup for Office 365 beim sichern diese Fehlermeldung:

Failed to process site: https://<TENANT>-my.sharepoint.com/personal/<USER>. Cannot contact site at the specified URL https://<TENANT>-my.sharepoint.com/personal/<USER>. Access to this Web site has been blocked. Please contact the administrator to resolve this problem.

Der „System Administrator“ kann den gelöschten Nutzer aber nicht mehr sehen, auch in der Veeam-Objektliste nicht.

Das liegt daran, das Microsoft die Site und deren Daten noch 90 Tage lang aufbewahrt, die Site aber den Status „locked“ bekommt. Die Fehlermeldung ist also technisch korrekt, aber wenig hilfreich.

Löschen der Sharepoint-Site

Man kann die Site, sofern nicht mehr benötigt (ist ja gesichert …), einfach „richtig“ löschen, dann verschwindet auch der Fehler sofort.

  1. PowerShell „Als Administrator“ öffnen und das SharePoint Online (SPO) Module installieren: Install-Module -Name Microsoft.Online.SharePoint.PowerShell
  2. Im Tenant als Global Admin bei SPO-Admin anmelden: Connect-SPOService -Url "https://TENANT-admin.sharepoint.com"
  3. Prüfen ob der SPO Nutzer noch vorhanden ist: Get-SPOUser -site "https://TENANT-my.sharepoint.com"
  4. Wenn der Benutzer noch da ist, diesen löschen Remove-SPOUser -Site "https://TENANT-my.sharepoint.com" -LoginName <UPN>
  5. Jetzt kann man nachsehen, ob die persönliche SharePoint Site von diesem Nutzer noch da ist (was vermutlich der Fall ist). Die genaue URL zur Benutzer-Site kann man aus der Veeam-Fehlermeldung kopieren Get-SPOSite "https://TENANT-my.sharepoint.com/personal/USER" | select *
  6. Wenn der Befehl einen Eintrag zurückgibt, auf den „LockState“ schauen. Dieser sollte „Unlock“ sein. Wenn das nicht der Fall ist, Lockstate zurücksetzen: Set-SPOSite "https://<TENANT>-my.sharepoint.com/personal/<USER>" -LockState Unlock
  7. Dann kann man die verweiste Site einfach entfernen: Remove-SPOSite "https://TENANT-my.sharepoint.com/personal/USER"

Wir würden uns wünschen, das Veeam hier eingreift. v5.0.1.252 fixt den Fehler leider nicht nicht, Backup-Jobs aus vorhergehenden Versionen stoppen bei diesem Fehler einfach. Wenn der Standard „Ignore this Object“ wäre, wäre das alles halb so schlimm …