added another host and logic to test if host is online
Without test for host online or other logic to see if backup was successful, the rename code would rename the host folder as the filename variable is blank
This commit is contained in:
@@ -11,45 +11,49 @@ $esxiHosts = @(
|
|||||||
"gauntesxi03.home.johnhgaunt.com"
|
"gauntesxi03.home.johnhgaunt.com"
|
||||||
"gauntesxi04.home.johnhgaunt.com"
|
"gauntesxi04.home.johnhgaunt.com"
|
||||||
"gauntesxi05.home.johnhgaunt.com"
|
"gauntesxi05.home.johnhgaunt.com"
|
||||||
|
"gauntesxi06.home.johnhgaunt.com"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Loop through each host
|
# Loop through each host
|
||||||
foreach ($esxiHost in $esxiHosts) {
|
foreach ($esxiHost in $esxiHosts) {
|
||||||
#New-VICredentialStoreItem -host $esxiHost -user root -pass ((get-credential).GetNetworkCredential().password); continue
|
#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
|
# Create the backup folder
|
||||||
$backupFolder = "\\gauntnas.home.johnhgaunt.com\veeam$\ESXi Host Configurations\$esxiHost"
|
new-item -ItemType Directory -Path $backupFolder -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# Create the backup folder
|
# Get the credentials for the host
|
||||||
new-item -ItemType Directory -Path $backupFolder -ErrorAction SilentlyContinue
|
$credentials = Get-VICredentialStoreItem -Host $esxiHost
|
||||||
|
|
||||||
# Get the credentials for the host
|
# Connect to the host
|
||||||
$credentials = Get-VICredentialStoreItem -Host $esxiHost
|
Connect-VIServer -server $esxiHost `
|
||||||
|
-user $credentials.user `
|
||||||
|
-Password $credentials.password
|
||||||
|
|
||||||
# Connect to the host
|
# Backup the host configuration
|
||||||
Connect-VIServer -server $esxiHost `
|
$filename = (Get-VMHostFirmware -vmhost $esxiHost `
|
||||||
-user $credentials.user `
|
-BackupConfiguration `
|
||||||
-Password $credentials.password
|
-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
|
# Only keep 25 backup files
|
||||||
$filename = (Get-VMHostFirmware -vmhost $esxiHost `
|
$daysToKeep = 25
|
||||||
-BackupConfiguration `
|
# Get old backup files
|
||||||
-destinationpath $backupFolder).Data.Name
|
$oldBackups = Get-ChildItem $backupFolder | `
|
||||||
|
Where-Object { -not $_.PsIsContainer } | `
|
||||||
# Rename the backup file with the date
|
Sort-Object CreationTime -Descending | `
|
||||||
Rename-Item "$backupFolder\$filename" "$backupFolder\$(get-date -UFormat %Y%m%d-%H%M%S) $filename" -verbose
|
Select-Object -Skip $daysToKeep
|
||||||
|
# Loop through each old file and remove it
|
||||||
# Only keep 25 backup files
|
foreach ($oldbackup in $oldBackups) {
|
||||||
$daysToKeep = 25
|
Remove-Item -Force $oldbackup.FullName -verbose
|
||||||
# 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
|
#Stop-Transcript
|
||||||
Reference in New Issue
Block a user