36 lines
1.1 KiB
YAML
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 |