diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ansible/modules/windows/win_pagefile.ps1 | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/lib/ansible/modules/windows/win_pagefile.ps1 b/lib/ansible/modules/windows/win_pagefile.ps1 index c3a88d5a8e..610028a0e1 100644 --- a/lib/ansible/modules/windows/win_pagefile.ps1 +++ b/lib/ansible/modules/windows/win_pagefile.ps1 @@ -95,8 +95,10 @@ if ($state -eq "absent") { Fail-Json $result "Unable to access '${drive}:' drive" } + $curPagefile = Get-Pagefile $fullPath + # Set pagefile - if ($null -eq (Get-Pagefile $fullPath)) { + if ($null -eq $curPagefile) { try { $pagefile = Set-WmiInstance -Class Win32_PageFileSetting -Arguments @{name = $fullPath; InitialSize = 0; MaximumSize = 0} -WhatIf:$check_mode } catch { @@ -129,6 +131,40 @@ if ($state -eq "absent") { } } $result.changed = $true + }else + { + $CurPageFileSystemManaged = (Get-CimInstance -ClassName win32_Pagefile -Property 'System' -Filter "name='$($fullPath.Replace('\','\\'))'").System + if ((-not $check_mode) -and + -not ($systemManaged -or $CurPageFileSystemManaged) -and + ( ($curPagefile.InitialSize -ne $initialSize) -or + ($curPagefile.maximumSize -ne $maximumSize))) + { + $curPagefile.InitialSize = $initialSize + $curPagefile.MaximumSize = $maximumSize + try { + $curPagefile.Put() | out-null + } catch { + $originalExceptionMessage = $($_.Exception.Message) + # Try workaround before failing + try { + Remove-Pagefile $fullPath -whatif:$check_mode + } catch { + Fail-Json $result "Failed to remove pagefile before workaround $($_.Exception.Message) Original exception: $originalExceptionMessage" + } + try { + $pagingFilesValues = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management").PagingFiles + } catch { + Fail-Json $result "Failed to get pagefile settings from the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage" + } + $pagingFilesValues += "$fullPath $initialSize $maximumSize" + try { + Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" $pagingFilesValues + } catch { + Fail-Json $result "Failed to set pagefile settings to the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage" + } + } + $result.changed = $true + } } } elseif ($state -eq "query") { $result.pagefiles = @() |