Files
2020-08-17 12:06:41 -04:00

36 lines
1.1 KiB
YAML

---
- name: see if Optimize-Volume cmdlet is available
win_command: powershell.exe "Get-Command -Name Optimize-Volume"
register: cleanup_defrag_cmdlet
failed_when: False
- name: defrag C with PS cmdlet
win_command: powershell.exe "Optimize-Volume -DriveLetter C"
when: cleanup_defrag_cmdlet.rc == 0
- name: defrag C with legacy exe
win_command: 'Defrag.exe C:'
when: cleanup_defrag_cmdlet.rc != 0
- name: 0 out empty space for later compression
win_shell: |
$path = "C:\zero"
$volume = Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID='C:'"
$block_size = 64kb
$leftover_size = $volume.Size * 0.05
$file_size = $volume.FreeSpace - $leftover_size
$data_array = New-Object -TypeName byte[]($block_size)
$stream = [System.IO.File]::OpenWrite($path)
try {
$current_file_size = 0
while ($current_file_size -lt $file_size) {
$stream.Write($data_array, 0, $data_array.Length)
$current_file_size += $data_array.Length
}
} finally {
if ($stream) {
$stream.Close()
}
}
Remove-Item -Path $path -Force | Out-Null