Add Optimize-FFUCaptureDrive function and disk cleanup to InstallAppsandSysprep.cmd file

This commit is contained in:
Zehadi Alam
2024-05-20 20:09:26 -04:00
parent 56f3e9d856
commit 49a9fd49c1
2 changed files with 43 additions and 0 deletions
@@ -18,5 +18,22 @@ timeout /t 10
REM Run Component Cleanup since dism /online /cleanup-image /analyzecomponentcleanup recommends it REM Run Component Cleanup since dism /online /cleanup-image /analyzecomponentcleanup recommends it
REM If adding latest CU, definitely need to do this to keep FFU size smaller REM If adding latest CU, definitely need to do this to keep FFU size smaller
dism /online /cleanup-image /startcomponentcleanup /resetbase dism /online /cleanup-image /startcomponentcleanup /resetbase
REM Run disk cleanup (cleanmgr.exe) with all options enabled: https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/automating-disk-cleanup-tool
set rootkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches
REM Per above doc, the Offline Pages Files subkey does not have stateflags value
for /f "tokens=*" %%K in ('reg query "%rootkey%"') do (
echo %%K | findstr /i /c:"Offline Pages Files"
if errorlevel 1 (
reg add "%%K" /v StateFlags0000 /t REG_DWORD /d 2 /f
)
)
cleanmgr.exe /sagerun:0
REM Remove the StateFlags0000 registry value
for /f "tokens=*" %%K in ('reg query "%rootkey%"') do (
echo %%K | findstr /i /c:"Offline Pages Files"
if errorlevel 1 (
reg delete "%%K" /v StateFlags0000 /f
)
)
REM Sysprep/Generalize REM Sysprep/Generalize
c:\windows\system32\sysprep\sysprep.exe /quiet /generalize /oobe c:\windows\system32\sysprep\sysprep.exe /quiet /generalize /oobe
+26
View File
@@ -1438,6 +1438,31 @@ function New-PEMedia {
Remove-Item -Path "$WinPEFFUPath" -Recurse -Force Remove-Item -Path "$WinPEFFUPath" -Recurse -Force
WriteLog 'Cleanup complete' WriteLog 'Cleanup complete'
} }
function Optimize-FFUCaptureDrive {
param (
[string]$VhdxPath
)
try {
WriteLog 'Mounting VHDX for volume optimization'
Mount-VHD -Path $VhdxPath
WriteLog 'Defragmenting Windows partition...'
Optimize-Volume -DriveLetter W -Defrag -NormalPriority -Verbose
WriteLog 'Performing slab consolidation on Windows partition...'
Optimize-Volume -DriveLetter W -SlabConsolidate -NormalPriority -Verbose
WriteLog 'Dismounting VHDX'
Dismount-ScratchVhdx -VhdxPath $VhdxPath
WriteLog 'Mounting VHDX as read-only for optimization'
Mount-VHD -Path $VhdxPath -NoDriveLetter -ReadOnly
WriteLog 'Optimizing VHDX in full mode...'
Optimize-VHD -Path $VhdxPath -Mode Full
WriteLog 'Dismounting VHDX'
Dismount-ScratchVhdx -VhdxPath $VhdxPath
} catch {
throw $_
}
}
function New-FFU { function New-FFU {
param ( param (
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
@@ -2364,6 +2389,7 @@ try {
WriteLog 'Waiting for VM to shutdown' WriteLog 'Waiting for VM to shutdown'
} while ($FFUVM.State -ne 'Off') } while ($FFUVM.State -ne 'Off')
WriteLog 'VM Shutdown' WriteLog 'VM Shutdown'
Optimize-FFUCaptureDrive -VhdxPath $VHDXPath
#Capture FFU file #Capture FFU file
New-FFU $FFUVM.Name New-FFU $FFUVM.Name
} }