Write-Host "Uninstalling Chef..." $app = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "Chef" } $app.Uninstall() Write-Host "Removing leftover Chef files..." Remove-Item "C:\Opscode\" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item "C:\Chef\" -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Cleaning Temp Files..." try { Takeown /d Y /R /f "C:\Windows\Temp\*" Icacls "C:\Windows\Temp\*" /GRANT:r administrators:F /T /c /q 2>&1 Remove-Item "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue } catch { } Write-Host "Optimizing Drive" Optimize-Volume -DriveLetter C Write-Host "Wiping empty space on disk..." $FilePath="c:\zero.tmp" $Volume = Get-WmiObject win32_logicaldisk -filter "DeviceID='C:'" $ArraySize= 64kb $SpaceToLeave= $Volume.Size * 0.05 $FileSize= $Volume.FreeSpace - $SpacetoLeave $ZeroArray= new-object byte[]($ArraySize) $Stream= [io.File]::OpenWrite($FilePath) try { $CurFileSize = 0 while($CurFileSize -lt $FileSize) { $Stream.Write($ZeroArray,0, $ZeroArray.Length) $CurFileSize +=$ZeroArray.Length } } finally { if($Stream) { $Stream.Close() } } Remove-Item $FilePath