diff --git a/Backup ESXi Host Configurations.ps1 b/Backup ESXi Host Configurations.ps1 new file mode 100644 index 0000000..9466c0d --- /dev/null +++ b/Backup ESXi Host Configurations.ps1 @@ -0,0 +1,55 @@ +# Set-PowerCLIConfiguration -DefaultVIServerMode Single +# Set-PowerCLIConfiguration -InvalidCertificateAction ignore +# Set-PowerCLIConfiguration -ParticipateInCEIP $false + +#Start-Transcript "C:\Users\Veeam_Service\Desktop\Backup ESXi Host Configurations.log" + +# host array to backup +$esxiHosts = @( + "gauntesxi01.home.johnhgaunt.com" + "gauntesxi02.home.johnhgaunt.com" + "gauntesxi03.home.johnhgaunt.com" + "gauntesxi04.home.johnhgaunt.com" + "gauntesxi05.home.johnhgaunt.com" +) + +# Loop through each host +foreach ($esxiHost in $esxiHosts) { + #New-VICredentialStoreItem -host $esxiHost -user root -pass ((get-credential).GetNetworkCredential().password); continue + + # Backup folder for each host + $backupFolder = "\\gauntnas.home.johnhgaunt.com\veeam$\ESXi Host Configurations\$esxiHost" + + # Create the backup folder + new-item -ItemType Directory -Path $backupFolder -ErrorAction SilentlyContinue + + # Get the credentials for the host + $credentials = Get-VICredentialStoreItem -Host $esxiHost + + # Connect to the host + Connect-VIServer -server $esxiHost ` + -user $credentials.user ` + -Password $credentials.password + + # Backup the host configuration + $filename = (Get-VMHostFirmware -vmhost $esxiHost ` + -BackupConfiguration ` + -destinationpath $backupFolder).Data.Name + + # Rename the backup file with the date + Rename-Item "$backupFolder\$filename" "$backupFolder\$(get-date -UFormat %Y%m%d-%H%M%S) $filename" -verbose + + # Only keep 25 backup files + $daysToKeep = 25 + # Get old backup files + $oldBackups = Get-ChildItem $backupFolder | ` + Where-Object { -not $_.PsIsContainer } | ` + Sort-Object CreationTime -Descending | ` + Select-Object -Skip $daysToKeep + # Loop through each old file and remove it + foreach ($oldbackup in $oldBackups) { + Remove-Item -Force $oldbackup.FullName -verbose + } +} + +#Stop-Transcript \ No newline at end of file