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