Create Backup ESXi Host Configurations.ps1

This commit is contained in:
2023-03-08 16:22:48 -05:00
parent 29022c9619
commit a64eabf117

View File

@@ -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