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:
2. Backup-NIC (Public) - SET
2. Backup-NIC (Public)
3. - 8. Für die Virtuellen Maschinen
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:
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:
Server-B = CredSSP Server
Server-C = Keine konfiguration notwendig (Laut meiner recherche)
* 2. Delegierung der AD-Objekte
In dem AD-Objekt von Server-C wurden alle Server-B als Delegierung eingetragen.
Jedoch klappte nach der Delegationseinstellung der Export über die Domänen-NIC. Leider ist das nur eine 1Gbit Anbindung.
Hat jemand eine Idee wie ich das Thema lösen kann?
Danke und erstmal einen schönen Abend
Patrick
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
2. Backup-NIC (Public) - SET
Server B:
Hyper-V-Node- Windows Server 2016/2019/2022
- Domänenmitglied
- S2D-Cluster Knoten
- Acht Netzwerinterface
2. Backup-NIC (Public)
3. - 8. Für die Virtuellen Maschinen
Server C:
Server mit Netzwerkfreigabe- Windows Server 2019
- Domänenmitglied
- Zwei Netzwerkinterface
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-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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 668347
Url: https://administrator.de/contentid/668347
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
11 Kommentare
Neuester Kommentar
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
https://learn.microsoft.com/de-de/troubleshoot/windows-server/networking ...
Gruß
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ß
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.VM Export auf Netzwerk Freigabe wird wohl nichts.
Meines Wissens:
Nicht supported.
HYPER-V Berechtigungen fehlen.
Zitat von @Sonny1895:
Hallo Ted555,
danke für die schnelle Antwort. Zu deinen Punkten:
Nein den hatte ich noch nicht hinzugefügt, da der Export vom Hyper-V-Node aus funktioniert.
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
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"}
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.
Reicht, klappt hier problemlos mit Double Hop.
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.