commit 2f4a9eb18e9a0cea3e964b409f1138c8c6ebdcaa Author: Dunestorm Date: Tue Mar 5 22:57:16 2019 +0000 Imported PSSystemImage diff --git a/PSSystemImage/PSSystemImage.ps1 b/PSSystemImage/PSSystemImage.ps1 new file mode 100644 index 0000000..192e64f --- /dev/null +++ b/PSSystemImage/PSSystemImage.ps1 @@ -0,0 +1,42 @@ +$DebugPreference = "Continue" + +# -------[Backup Config]------- # +# These must include a colon after the drive letter # +$osDiskLetter = "C:" +$bakDiskLetter = "Z:" +$backupsToKeep = "7" +$reqDiskSpacePercent = "15" +# ----------------------------- # + +$osDiskSpaceRaw = Get-PSDrive $osDiskLetter.Trim(":") | Select-Object Used +$bakDiskSpaceRaw = Get-PSDrive $bakDiskLetter.Trim(":") | Select-Object Free +$osDiskSpaceGB = [math]::Round(($osDiskSpaceRaw.Used / 1024 / 1024 /1024),2) +$bakDiskSpaceGB = [math]::Round(($bakDiskSpaceRaw.Free / 1024 / 1024 /1024),2) +$reqDiskSpaceGB = [math]::Round(($osDiskSpaceRaw.Used / 100 * $reqDiskSpacePercent /1024 /1024 /1024),2) + +Write-Host "---Created by Fil Sapia (v1.1)--" +Write-Host "--------[Configuration]---------" +Write-Host "OS Disk ($($osDiskLetter)) $($osDiskSpaceGB)GB Used" +Write-Host "Backup Disk ($($bakDiskLetter)) $($bakDiskSpaceGB)GB Free" +Write-Host "Required Space: $($reqDiskSpaceGB)GB" +Write-Host "--------------------------------" + +if ($bakDiskSpaceGB -lt $reqDiskSpaceGB) +{ + + Write-Host "WARNING: Not enough free space to complete Windows Image Backup!" + New-Item $PSScriptRoot\_NO_FREE_SPACE -Force | Out-Null + Exit 1 +} +else +{ + if (Test-Path $PSScriptRoot\_NO_FREE_SPACE -PathType Leaf) + {Remove-Item $PSScriptRoot\_NO_FREE_SPACE} + + Write-Debug "Enough free space." + Write-Host "Initiating backup process..." + WBADMIN START BACKUP -backupTarget:$bakDiskLetter -include:$osDiskLetter -allCritical -quiet + WBADMIN DELETE BACKUP -keepVersions:$backupsToKeep -quiet + WBADMIN GET VERSIONS > $PSScriptRoot\WBAdmin_Output.txt + Exit 0 +} \ No newline at end of file