Назад | Перейти на главную страницу

Используйте WMI для удаления файла подкачки

Я могу изменить настройки файла подкачки через WMI вот так

PS D:\> gwmi win32_pagefilesetting

                            MaximumSize Name                                    Caption
                            ----------- ----                                    -------
                                   8192 c:\pagefile.sys                         c:\ 'pagefile.sys'
                                   8192 d:\pagefile.sys                         d:\ 'pagefile.sys'


PS D:\> $pf=gwmi win32_pagefilesetting
PS D:\> $pf.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS D:\> $pf[0].InitialSize=4096;$pf[0].MaximumSize=4096
PS D:\> $pf[0].Put()
PS D:\> gwmi win32_pagefilesetting

                            MaximumSize Name                                    Caption
                            ----------- ----                                    -------
                                   4096 c:\pagefile.sys                         c:\ 'pagefile.sys'
                                   8192 d:\pagefile.sys                         d:\ 'pagefile.sys'

Но как я могу удалить настройку файла подкачки, например при этом удалите файл подкачки на D :?

Нашел.

Есть метод .Delete (), который делает свое дело.

PS D:\> $pf[1].Delete()
PS D:\> gwmi win32_pagefilesetting

                            MaximumSize Name                                    Caption
                            ----------- ----                                    -------
                                   4096 c:\pagefile.sys                         c:\ 'pagefile.sys'

Готово.

Хотя некоторые не рекомендуют этого, если вы хотите полностью отключить файлы подкачки, обязательно отключите также автоматическое управление страницами:

# Disable automatic pagefile management
$cs = gwmi Win32_ComputerSystem
if ($cs.AutomaticManagedPagefile) {
    $cs.AutomaticManagedPagefile = $False
    $cs.Put()
}
# Disable a *single* pagefile if any
$pg = gwmi win32_pagefilesetting
if ($pg) {
    $pg.Delete()
}