WIP3
This commit is contained in:
36
roles/oatakan.windows_template_build/tasks/compact-alt.yml
Normal file
36
roles/oatakan.windows_template_build/tasks/compact-alt.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
|
||||
- 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
|
||||
Reference in New Issue
Block a user