diff --git a/Backup ESXi Host Configurations.ps1 b/Backup ESXi Host Configurations.ps1 index 9466c0d..4446f99 100644 --- a/Backup ESXi Host Configurations.ps1 +++ b/Backup ESXi Host Configurations.ps1 @@ -11,45 +11,49 @@ $esxiHosts = @( "gauntesxi03.home.johnhgaunt.com" "gauntesxi04.home.johnhgaunt.com" "gauntesxi05.home.johnhgaunt.com" + "gauntesxi06.home.johnhgaunt.com" ) # Loop through each host foreach ($esxiHost in $esxiHosts) { #New-VICredentialStoreItem -host $esxiHost -user root -pass ((get-credential).GetNetworkCredential().password); continue + + # Only move forward if host is online or else the rename will rename the host folder + if (Test-Connection -Count 1 -Quiet $esxiHost) { + # Backup folder for each host + $backupFolder = "\\gauntnas.home.johnhgaunt.com\veeam$\ESXi Host Configurations\$esxiHost" - # 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 - # Create the backup folder - new-item -ItemType Directory -Path $backupFolder -ErrorAction SilentlyContinue + # Get the credentials for the host + $credentials = Get-VICredentialStoreItem -Host $esxiHost - # 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 - # 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 - # 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 - } + # 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