sonny1895
Goto Top

Remote Powershell - Export-VM auf Netzwerkfreigabe

Hallo zusammen,

ich erarbeite gerade ein neues Skript um Hyper-V VMs zu exportieren. Momentan läuft dafür auf jeder Hyper-V-Node ein Skript und ich möchte diese Skripte zentralisieren. Bedeutet der Export der VMs soll per Remote getriggert werden. Der Export der VMs soll auf eine Netzwerkfreigabe geschehen.

Mein Szenario:

Server A: Zentraler Backup-Server
  • Windows Server 2022
  • Domänenmitglied
  • Zwei Netzwerkinterface
1. RDP-NIC (Domäne) - SET
2. Backup-NIC (Public) - SET

Server B: Hyper-V-Node
  • Windows Server 2016/2019/2022
  • Domänenmitglied
  • S2D-Cluster Knoten
  • Acht Netzwerinterface
1. RDP-NIC (Domäne) - SET or TEAM
2. Backup-NIC (Public)
3. - 8. Für die Virtuellen Maschinen

Server C: Server mit Netzwerkfreigabe
  • Windows Server 2019
  • Domänenmitglied
  • Zwei Netzwerkinterface
1. RDP-NIC (Domäne)
2. Backup-NIC (Public) - SET (Hat in der Domänen einen DNS Eintrag)

Auf 'Server A' wird das Skript gestartet und alle notwendigen Informationen von 'Server B' gesammelt. Dann wird der PS-Befehl 'Export-VM' mit Speicherpfad: 'Server C' ausgeführt. Der Export soll über die BACKUP-NIC laufen, weil das die 10Gbit Anbindung ist.

Mein Skript:

#deklarieren des Credentials
$password = 'my password'  
$pass = ConvertTo-SecureString -AsPlainText $password -Force 
$Username = 'mydomain.local\domainadmin'  
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass

#deklarieren der Variablen
$Datum = Get-Date -Format ddMMyyyy
$CluNode = 'Server-B@mydomain.local'  
$VMs = Get-VM -ComputerName $CluNode

# setzen des Netzwerkpfades
# Für Server-c-Backup-NIC@mydomain.local wurde ein zusätzlicher DNS Eintrag gemacht
$BackupPathRoot = "\\Server-c-Backup-NIC@mydomain.local\s2d"  
$BackupPath = Join-Path $BackupPathRoot ($CluNode).Substring(0,9)
$BackupPath = Join-Path $BackupPath $Datum

# Variante 1 Export-VM
Export-VM -ComputerName $CluNode -Name $VMs.Name -Path $BackupPath -ErrorAction Stop -ErrorVariable erroroutput -WarningVariable warningoutput

# Variante 2 Export-VM
$result = Invoke-Command -ComputerName $CluNode -Credential $Cred -ScriptBlock{
                    
                    param($param1, $param2)

                    $erroroutput = $null
                    $warningoutput = $null
                                        
                    Export-VM -Name $param1.Name -Path $param2 -ErrorAction Stop -ErrorVariable erroroutput -WarningVariable warningoutput
                    
                    return @{
                        Erroroutpu = $erroroutput
                        Warningoutpu = $warningoutput
                    }
                } -ArgumentList $VMs,$BackupPath

Mein Problem:

Ich bekomme einen Fehler 'Export-VM : Failed to create export directory' (Siehe Screenshot unten). Der Fehler kommt nicht wenn ich den Befehlt direkt auf Server-B ausführe.

Meine Vermutung: DOUBLE-HOP-Problem.

Meine Lösungsansätze:

  • 1. CredSSP konfiguriert.
Server-A = CredSSP Client
Server-B = CredSSP Server
Server-C = Keine konfiguration notwendig (Laut meiner recherche)

Ohne Erfolg

* 2. Delegierung der AD-Objekte
In dem AD-Objekt von Server-C wurden alle Server-B als Delegierung eingetragen.
$HVNODES = Get-ADComputer -Filter "Name -like 'Server-B'"  

Set-ADComputer -Identity 'Server-C' -PrincipalsAllowedToDelegateToAccount $HVNODES  

Ohne Erfolg

Jedoch klappte nach der Delegationseinstellung der Export über die Domänen-NIC. Leider ist das nur eine 1Gbit Anbindung.

Fehlerhafter Bakuppath:
  • Server-c-Backup-NIC@mydomain.local (Zusätzlicher DNS-Eintrag)

Funktionierender Backuppath: (Nach Delegierung)
  • Server-c-MGMT-NIC@mydomain.local (Über die NIC in die Domäne aufgenommen)


Hat jemand eine Idee wie ich das Thema lösen kann?

Danke und erstmal einen schönen Abend
Patrick
2024-09-24_14h57_22

Content-ID: 668347

Url: https://administrator.de/contentid/668347

Ausgedruckt am: 21.11.2024 um 13:11 Uhr

150704
150704 24.09.2024 aktualisiert um 18:23:48 Uhr
Goto Top
Erst einmal, hast du daran gedacht dem Hyper-V Computer Account das NTFS-Schreibrecht und Freigabeberechtigung auf die Freigabe zu geben? Die Fehlermeldung lässt vermuten das du das vergessen hast:
Error 0x80070005 when you export Hyper-V VMs over the Network
Server-c-Backup-NIC@mydomain.local (Zusätzlicher DNS-Eintrag)
Stichwort Kerberos! Wenn man alternative Namen für Server benutzt müssen diese in der Domain erst bekannt gemacht werden mittels netdom computername bzw. SPN, da sonst eine Auth über Kerberos nicht zugelassen wird, wenn du über den alternativen Namen auf den Server mit dem Backuppath zugreifst.
https://learn.microsoft.com/de-de/troubleshoot/windows-server/networking ...

Gruß
skarfield
skarfield 24.09.2024 um 17:17:13 Uhr
Goto Top
VM Export auf Netzwerk Freigabe wird wohl nichts.
Meines Wissens:
Nicht supported.
HYPER-V Berechtigungen fehlen.
Es sei denn über eine ISCsI Freigabe. Das klappt.
150704
150704 24.09.2024 aktualisiert um 18:28:17 Uhr
Goto Top
Zitat von @skarfield:
VM Export auf Netzwerk Freigabe wird wohl nichts.
Meines Wissens:
Nicht supported.
HYPER-V Berechtigungen fehlen.
Das geht schon, man muss halt den Computer-Account des Hyper-V Hosts zu den Share- und NTFS-Berechtigungen der Freigabe hinzufügen.
skarfield
skarfield 24.09.2024 um 20:16:24 Uhr
Goto Top
Ah, danke
Sonny1895
Sonny1895 25.09.2024 um 08:38:50 Uhr
Goto Top
Hallo Ted555,

danke für die schnelle Antwort. Zu deinen Punkten:

Zitat von @150704:
Erst einmal, hast du daran gedacht dem Hyper-V Computer Account das NTFS-Schreibrecht und Freigabeberechtigung auf die Freigabe zu geben? Die Fehlermeldung lässt vermuten das du das vergessen hast:
Error 0x80070005 when you export Hyper-V VMs over the Network

Nein den hatte ich noch nicht hinzugefügt, da der Export vom Hyper-V-Node aus funktioniert.
Zitat von @Sonny1895:
Ich bekomme einen Fehler 'Export-VM : Failed to create export directory' (Siehe Screenshot unten). Der Fehler kommt nicht wenn ich den Befehlt direkt auf Server-B ausführe.

Hab es trotzdem ausprobiert, hat leider keinen Erfolg gebracht.

Zur Ergänzung:

Die Freigabe ist mit der Berechtigung Jeder Eingerichtet und über NTFS habe ich die entsprechenden DomänenAdministratoren mit Vollzugriff hinzugefügt.


Zitat von @150704:
Stichwort Kerberos! Wenn man alternative Namen für Server benutzt müssen diese in der Domain erst bekannt gemacht werden mittels netdom computername bzw. SPN, da sonst eine Auth über Kerberos nicht zugelassen wird, wenn du über den alternativen Namen auf den Server mit dem Backuppath zugreifst.

Hab den netdom Befehl ausgeführt und einen alternativen Namen hinzugeüfgt. Dieser wird auch bei der Abfrage
netdom computername Server-C@mydomain.local
auch mit angezeigt. Jetzt habe ich probiert das AD-Objekt mittels Alternativen Namen aufzurufen

Get-ADComputer -Filter {DNSHostName -eq "Server-c-Backup-NIC@mydomain.local"}  
hier bekomme ich keinen Treffer.

Habe trotzdem den Export-VM Befehl auf Server-A ausgeführt und bekomme die selbe Fehlermeldung.

Viele Grüße
Patrick
Sonny1895
Sonny1895 25.09.2024 um 08:40:55 Uhr
Goto Top
Hi skarfield,

Zitat von @skarfield:

VM Export auf Netzwerk Freigabe wird wohl nichts.
Meines Wissens:
Nicht supported.
HYPER-V Berechtigungen fehlen.
Es sei denn über eine ISCsI Freigabe. Das klappt.

Danke für die Tipps. Der Export der VMs funktioniert von einem Hyper-V-Node direkt auf die Freigabe ohne Probleme. Nur leider nicht wenn ich das Remote starten möchte.

Viele Grüße
Patrick
150704
150704 25.09.2024 aktualisiert um 09:35:12 Uhr
Goto Top
Zitat von @Sonny1895:

Hallo Ted555,

danke für die schnelle Antwort. Zu deinen Punkten:

Zitat von @150704:
Erst einmal, hast du daran gedacht dem Hyper-V Computer Account das NTFS-Schreibrecht und Freigabeberechtigung auf die Freigabe zu geben? Die Fehlermeldung lässt vermuten das du das vergessen hast:
Error 0x80070005 when you export Hyper-V VMs over the Network

Nein den hatte ich noch nicht hinzugefügt, da der Export vom Hyper-V-Node aus funktioniert.

Reicht aber nicht!

Zitat von @Sonny1895:
Zur Ergänzung:

Die Freigabe ist mit der Berechtigung Jeder Eingerichtet und über NTFS habe ich die entsprechenden DomänenAdministratoren mit Vollzugriff hinzugefügt.

Das reicht aber nicht!!!
Der Export läuft egal welcher Account immer im Kontext des Computeraccounts des Hyper-V Nodes !

Get-ADComputer -Filter {DNSHostName -eq "Server-c-Backup-NIC@mydomain.local"}  
hier bekomme ich keinen Treffer.

Normal, weil der "primäre" Name ja anders lautet ...

Habe trotzdem den Export-VM Befehl auf Server-A ausgeführt und bekomme die selbe Fehlermeldung.
S.o.

Klappt hier einwandfrei.
Sonny1895
Sonny1895 25.09.2024 um 09:38:18 Uhr
Goto Top
Zitat von @150704:

Zitat von @Sonny1895:

Hallo Ted555,

danke für die schnelle Antwort. Zu deinen Punkten:

Zitat von @150704:
Erst einmal, hast du daran gedacht dem Hyper-V Computer Account das NTFS-Schreibrecht und Freigabeberechtigung auf die Freigabe zu geben? Die Fehlermeldung lässt vermuten das du das vergessen hast:
Error 0x80070005 when you export Hyper-V VMs over the Network

Nein den hatte ich noch nicht hinzugefügt, da der Export vom Hyper-V-Node aus funktioniert.

Reicht aber nicht!

Zitat von @Sonny1895:
Zur Ergänzung:

Die Freigabe ist mit der Berechtigung Jeder Eingerichtet und über NTFS habe ich die entsprechenden DomänenAdministratoren mit Vollzugriff hinzugefügt.

Das reicht aber nicht!!!
Der Export läuft egal welcher Account immer im Kontext des Computeraccounts des Hyper-V Nodes !

Get-ADComputer -Filter {DNSHostName -eq "Server-c-Backup-NIC@mydomain.local"}  
hier bekomme ich keinen Treffer.

Normal, weil der "primäre" Name ja anders lautet ...

Habe trotzdem den Export-VM Befehl auf Server-A ausgeführt und bekomme die selbe Fehlermeldung.
S.o.

Klappt hier einwandfrei.

Ok. Auch mit berechtigten Computer-Objekt, funktioniert der Export nicht wie gewünscht. ANscheinend reicht das auch nicht.

Viele Grüße
Patrick
150704
150704 25.09.2024 um 09:41:30 Uhr
Goto Top
Reicht, klappt hier problemlos mit Double Hop.
Sonny1895
Sonny1895 25.09.2024 um 09:47:37 Uhr
Goto Top
Zitat von @150704:

Reicht, klappt hier problemlos mit Double Hop.

Ok, dann warte ich noch etwas und probiere es später nochmal. Werde mich dann mit entsprechenden Screenshot zu den Einstellungen nochmal melden. Eventuell hast du noch mehr eingestellt als ich hier. Fakt ist: Leider funktioniert das momentan bei mir nicht. Hab die Einstellungen wie beschrieben gemacht.

VG
Patrick
simple198
simple198 25.09.2024 um 20:01:17 Uhr
Goto Top
Ok. Auch mit berechtigten Computer-Objekt, funktioniert der Export nicht wie gewünscht. ANscheinend reicht das auch nicht.

Ein ähnlichen Fall hatte ich auch, bis ich mich dazu entschieden habe, im Script ein Share zu verbinden.
Also ganz einfach "net use". Nach dem Upload dann wieder entfernen.

Ich habe mir nicht alles durchgelesen, aber ich habe das so aufgebaut, dass das Script per Aufgabenplanung mit einem bestimmten User aus der AD gestartet wird. Der darf nur dediziert auf beiden Server bestimmte Verzeichnisse lesen bzw. schreiben und ist kein Server-Admin oder ähnliches. Die einzige Berechtigung der dieser User benötigt, ist die Stapelverarbeitung.

Vielleicht ist das noch ein Workaround.