Moin zusammen,
uns ist aufgefallen, dass nach einem Update von VMware Workstation die selbst erstellten virtuellen Netzwerke nicht mehr da sind.
Auf unseren Wunsch hat neo42 ein Backup in die Deploy-Application.ps1 eingbaut. Vielen Dank dafür.
Da sich neo42 gegen eine automatische Wiederherstellung entschieden hat, haben wir selbst ein paar Anpassungen an der ps1 vorgenommen.
Dass nicht jeder das Rad neu erfinden muss, hier unsere Anpassungen:
#region CustomInstallAndReinstallAndSoftMigrationEnd content
## restore network settings from latest backup
$vnetlibPath = "$($global:packageconfig.InstallLocation)\vnetlib.exe"
$backupFolder = Split-Path -Path $global:AppLogFolder -Parent
$tempFolder = "C:\Temp"
Write-Log -Message "$backupFolder set as source for network import." -Source $deployAppScriptFriendlyName
if ($true -eq (Test-Path -Path $vnetlibPath)) {
Write-Log -Message "$vnetlibPath is available." -Source $deployAppScriptFriendlyName
if (-not (Test-Path -Path $tempFolder)) {
New-Item -Path $tempFolder -ItemType Directory -Force | Out-Null
Write-Log -Message "Created temp folder $tempFolder." -Source $deployAppScriptFriendlyName
}
$backupFiles = Get-ChildItem -Path $backupFolder -Filter "VMWareVirtualNetworkSettings_*" -File -Recurse | Sort-Object LastWriteTime -Descending
Write-Log -Message "Found $($backupFiles.Count) backups in '$backupFolder' + subfolders." -Source $deployAppScriptFriendlyName
if ($backupFiles.Count -gt 0) {
$sourceFile = $backupFiles[0].FullName
$tempFile = Join-Path -Path $tempFolder -ChildPath $backupFiles[0].Name
Copy-Item -Path $sourceFile -Destination $tempFile -Force
Write-Log -Message "Copied to temp: $tempFile" -Source $deployAppScriptFriendlyName
Execute-Process -Path $vnetlibPath -Parameters "-- import $tempFile" -IgnoreExitCodes '1' -ExitOnProcessFailure $false
Start-Sleep -Seconds 5
Remove-Item -Path $tempFile -Force -ErrorAction SilentlyContinue
Write-Log -Message "Deleted temp file $tempFile." -Source $deployAppScriptFriendlyName
}
else {
Write-Log -Message "No backup file available." -Source $deployAppScriptFriendlyName
}
}
else {
Write-Log -Message "VMware Virtual Network Editor not available." -Source $deployAppScriptFriendlyName
}
#endregion CustomInstallAndReinstallAndSoftMigrationEnd content
Wir durchsuchen den gesamten VMware Log-Ordner nach der neuesten Backupdatei und lesen diese dann ein. Der Umweg über den Temp-Ordner ist leider nötig, da die vnetlib exe keine „“ verarbeiten kann und somit ein Pfad ohne Leerzeichen gebraucht wird. Warum auch immer…
Die Anpassung ist für die Version 26.0.0. Für die Versionen darunter muss die vnetlib64.exe aufgerufen werden.
Für den Fall einer Reparatur (Deinstallation + Installation) haben wir das Backup bei CustomUninstallBegin nochmal eingefügt:
#region CustomUninstallBegin content
## export network settings for backup purpose
if ($true -eq (Test-Path -Path "$($global:packageconfig.InstallLocation)\vnetlib.exe")) {
Execute-Process -Path "$($global:packageconfig.InstallLocation)\vnetlib.exe" -Parameters "-- export $($global:AppLogFolder)\VMWareVirtualNetworkSettings_$DeploymentTimestamp.txt" -IgnoreExitCodes '1' -ExitOnProcessFailure $false
}
#endregion CustomUninstallBegin content
Auch hier wieder die vnetlib64.exe aufrufen, für Versionen <26.0.0.
Hoffe es hilft. Falls jemand einen besseren Weg kennt, gerne kommentieren.
Gruß
Benjamin