Create Backup ESXi Host Configurations.ps1
This commit is contained in:
55
Backup ESXi Host Configurations.ps1
Normal file
55
Backup ESXi Host Configurations.ps1
Normal 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
|
||||
Reference in New Issue
Block a user