Win32_PageFileSetting vacío: por qué sucede y cómo obtener datos del pagefile en PowerShell

¿Ejecutas Get-CimInstance -ClassName Win32_PageFileSetting y PowerShell responde con “No instance(s) available”? Tranquilo: no es un bug. Windows reserva esta clase exclusivamente para archivos de paginación cuyo tamaño ha sido establecido de forma manual. Cuando el sistema opera en modo System‑managed size, la instancia sencillamente no existe y la consulta queda vacía. A continuación encontrarás una guía completa para entender por qué ocurre, cómo validarlo y qué alternativas tienes para monitorizar y automatizar la configuración del pagefile.

Índice

Qué es exactamente Win32_PageFileSetting

Dentro del esquema WMI, esta clase refleja la configuración persistente del archivo de paginación —tamaño inicial, máximo y ruta— que el administrador definió explícitamente. Su contenido se escribe en el Registro en la clave HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles y solo cambia:

  • Al modificar la memoria virtual en el Panel de control.
  • Al usar wmic pagefileset, Set-CimInstance o API equivalentes.

Si dicha clave contiene el valor especial ?:\pagefile.sys 0 0 (cero inicial y cero máximo), Windows interpreta que el tamaño será “Administrado por el sistema” y omite crear instancias en Win32_PageFileSetting.

Por qué tu consulta devuelve vacío

Regla principal: Sin tamaño fijo, sin instancia.

En versiones desde Windows Server 2012 R2 hasta Windows 11 23H2 se mantiene la misma lógica:

  1. Si la UI está marcada como Administrar automáticamente el tamaño del archivo de paginación para todas las unidades, la ruta y los límites se calculan en cada arranque según la memoria RAM y otros factores (dumps de memoria, espacio libre en disco, etc.).
  2. Como no existe un tamaño inicial/máximo persistente, Microsoft decidió que Win32_PageFileSetting no es el lugar adecuado para exponer algo “flotante”.
  3. El resultado al consultar mediante CIM/WMI, WMIC o WQL es una colección vacía.

Cómo forzar la aparición de una instancia

Si necesitas que la clase devuelva datos —por ejemplo, porque una herramienta de inventario lo requiere— basta con fijar el tamaño manualmente:

  1. Abre sysdm.cpl ▸ pestaña Opciones avanzadasRendimientoOpciones avanzadasMemoria virtual.
  2. Desmarca Administrar automáticamente el tamaño del archivo de paginación.
  3. Selecciona la unidad (normalmente C:), elige Tamaño personalizado y define valores inicial y máximo.
  4. Tras reiniciar, ejecuta:
    Get-CimInstance -ClassName Win32_PageFileSetting

Verás de inmediato una salida similar a:

Name             InitialSize MaximumSize
C:\pagefile.sys   4096         8192

Clases alternativas para el modo automático

Si prefieres mantener el tamaño administrado por Windows, no pierdes visibilidad. Estas clases ofrecen la información operativa que buscas:

Clase WMI/CIMPropósitoEjemplo de uso
Win32_PageFileUsageEstadísticas de uso en tiempo real: tamaño asignado, espacio en uso, porcentaje.Get-CimInstance Win32_PageFileUsage
Win32_ComputerSystemPropiedad AutomaticManagedPagefile indica $true o $false.(Get-CimInstance Win32_ComputerSystem).AutomaticManagedPagefile
Win32_OperatingSystemCampos TotalVirtualMemorySize y FreeVirtualMemory.Get-CimInstance Win32_OperatingSystem

Buenas prácticas para scripts de inventario

Detecta el modo antes de actuar

El patrón más robusto consiste en:

$cs = Get-CimInstance Win32_ComputerSystem
if (-not $cs.AutomaticManagedPagefile) {
    Get-CimInstance Win32_PageFileSetting
} else {
    Get-CimInstance Win32_PageFileUsage
}

Usa CIM en lugar de WMI clásico

  • Get-CimInstance funciona vía WS‑Man y soporta remoting estándar.
  • Es hasta 2× más rápido que Get-WmiObject.
  • Permite filtrado del lado servidor (-Filter) y compresión.

Guarda la salida en objetos reutilizables

Aprovecha el tipado de PowerShell para combinar métricas:

$usage = Get-CimInstance Win32_PageFileUsage
$os    = Get-CimInstance Win32_OperatingSystem
[PSCustomObject]@{
    Drive        = $usage.Name
    AllocatedMB  = $usage.AllocatedBaseSize
    CurrentUseMB = $usage.CurrentUsage
    FreeMB       = $os.FreeVirtualMemory / 1KB
}

Automatizar el cambio de tamaño con PowerShell

Para modificar las dimensiones de manera programática en cientos de servidores:

  1. Comprueba si hay instancia existente:
    $pf = Get-CimInstance Win32_PageFileSetting -ErrorAction SilentlyContinue
  2. Si no la hay, créala:
    New-CimInstance -Query 'SELECT * FROM Win32_PageFileSetting' -Property @{Name='C:\pagefile.sys';InitialSize=1024;MaximumSize=4096}
  3. Actualiza:
    Set-CimInstance -InputObject $pf -Property @{InitialSize=4096;MaximumSize=8192}
  4. Reinicia para aplicar: Restart-Computer

Tip: Si tu entorno está en Azure o AWS, usa la extensión de CustomScript para inyectar el cambio en máquinas ya desplegadas.

Preguntas frecuentes

¿Por qué WMIC pagefile list /format:list también está vacío?

El comando WMIC pagefile se basa en la misma clase Win32_PageFileSetting. Si ésta no tiene instancias, la salida será nula.

¿Existe riesgo al fijar un tamaño manual?

En sistemas con crash dumps completos, define al menos RAM + 1 GB; de lo contrario, los volcados pueden truncarse. En entornos con mucho I/O de disco, mantener el modo automático suele ser más conveniente porque Windows ajusta dinámicamente.

¿Cómo replico la configuración en múltiples nodos?

Exporta la subclave PagingFiles como .reg o utiliza Desired State Configuration (DSC):

Configuration PageFileDSC {
    Node $AllNodes.Where{$_.Role -eq 'Web'}.NodeName {
        Pagefile C {
            Ensure       = 'Present'
            Drive        = 'C'
            InitialSize  = 4096
            MaximumSize  = 8192
        }
    }
}

¿Puede haber más de un pagefile?

Sí. Para discos dedicados puedes crear varios archivos de paginación y cada uno tendrá su propia instancia —siempre que el tamaño sea manual—. Esto mejora el rendimiento al distribuir la carga de escritura.

¿Cómo monitorizo alertas de espacio bajo en el pagefile?

Crea un contador de rendimiento personalizado con Win32_PageFileUsage.CurrentUsage y enlázalo a tu sistema de alertas (Zabbix, SCOM, Prometheus + WMI exporter…). Dispara un aviso cuando supere, por ejemplo, el 75 % del valor AllocatedBaseSize.

Conclusión

Win32PageFileSetting no está “roto”; simplemente obedece a la filosofía de Windows: mostrar únicamente configuraciones explícitas. Si tu consulta arroja vacío, lo más probable es que el archivo de paginación esté en modo gestionado automáticamente. Para auditoría o scripting, detecta primero AutomaticManagedPagefile y usa Win32PageFileUsage cuando proceda. Así obtendrás datos fiables sin forzar cambios innecesarios en la infraestructura.

Índice