The other day I tweeted a short bit of code on how to automate the zeroing-out of your VDI images using SDelete:
I got quite a few DMs afterwards asking if it was possible to do the same with VMware’s OS Optimization Tool.
So without further ado, here’s the code I use as the last step in my Packer builds before closing them down for svMotioning:
$ErrorActionPreference = "Stop" | |
$webserver = "webserver.contoso.local" | |
$url = "http://" + $webserver | |
$files = @("VMwareOSOptimizationTool.exe","VMwareOSOptimizationTool.exe.config","my_osot.xml") | |
$exe = $files[0] | |
$arg = "-o -t " + $files[2] | |
# Verify connectivity | |
if (Test-Connection $webserver –Quiet){ | |
# Get the OSOT files | |
ForEach ($file in $files) | |
{ | |
Invoke-WebRequest –Uri ($url + "/" + $file) –OutFile $env:TEMP\$file | |
} | |
} else { | |
throw "No connection to server. Aborting." | |
} | |
# Change to temp folder | |
Set-Location $env:TEMP | |
# Run OSOT | |
Try | |
{ | |
Start-Process $exe –ArgumentList $arg –Passthru –Wait –ErrorAction stop | |
} | |
Catch | |
{ | |
Write-Error "Failed to run OSOT" | |
Write-Error $_.Exception | |
Exit -1 | |
} | |
# Delete files | |
ForEach ($file in $files) | |
{ | |
Remove-Item –Path $env:TEMP\$file –Confirm:$false | |
} |
Please remember to swap out your web server and to specify your own XML file. You could also YOLO it and use one of the built-in templates…
…but don’t be surprised when you cripple half your apps 🙂