Get-ItemProperty en PowerShell: guía completa con ejemplos

Última actualización: 14/08/2025
Autor: Isaac
  • Get-ItemProperty recupera propiedades en FileSystem, Registry e IIS con una sintaxis coherente.
  • Domina Path/LiteralPath, Name, Include/Exclude, Filter y Credential para afinar consultas.
  • Casos reales: versión de Windows, software instalado, bindings de IIS y metadatos de archivos.
  • Escenarios avanzados: remoto, activación de Windows, historial USB y resolución de errores.

Comando Get-ItemProperty en PowerShell

Si trabajas con Windows y PowerShell, dominar el cmdlet Get-ItemProperty te abre la puerta a leer propiedades de archivos, carpetas, claves del Registro e incluso objetos expuestos por otros proveedores. Es de esos comandos que se usan a diario para auditar sistemas, obtener metadatos o revisar configuraciones sin tener que abrir ninguna interfaz gráfica.

En esta guía práctica vas a encontrar desde su sintaxis y parámetros hasta ejemplos reales aplicados al Registro, al sistema de archivos y a IIS, junto con trucos para entornos remotos y solución de errores comunes. Todo ello con un enfoque claro, en español, y con comandos listos para pegar en tu consola, para que puedas trabajar con fluidez desde el primer minuto.

¿Qué es Get-ItemProperty en PowerShell?

Get-ItemProperty es un cmdlet que recupera las propiedades de uno o varios elementos en una ubicación dada, respetando el proveedor de PowerShell que haya detrás (FileSystem, Registry, etc.). Por ejemplo, puedes leer la propiedad LastAccessTime de un archivo, obtener valores de una clave del Registro o consultar propiedades de objetos de IIS a través de su proveedor.

La gran ventaja es su consistencia: la misma idea funciona sobre distintos orígenes de datos, y además admite canalización y comodines en la mayoría de escenarios a través de sus parámetros. Si te mueves entre archivos, Registro y espacios de nombres como IIS, te sentirás como en casa con este cmdlet.

También existe el alias gp, muy práctico para escribir rápido en consola (gp equivale a Get-ItemProperty), y funciona sobre cualquier proveedor expuesto en la sesión. Puedes ver los proveedores disponibles con Get-PSProvider.

Uso general de Get-ItemProperty

cómo mostrar manuales y ayuda para sintáxis de comandos en powershell
Artículo relacionado:
Cómo consultar ayuda y manuales de comandos en PowerShell

Sintaxis y conjuntos de parámetros

Get-ItemProperty admite dos formas principales de indicar la ruta: mediante Path (predeterminado) o LiteralPath, además del filtro por nombre de propiedad con Name. La elección entre Path y LiteralPath depende de si necesitas que PowerShell interprete comodines o no.

Forma con Path (predeterminada):

Get-ItemProperty  <String[]>  <String[]>]  >] >]  

Forma con LiteralPath (sin interpretar comodines):

Get-ItemProperty  <String[]>] -LiteralPath <String[]>  >] >]  

Cuando uses LiteralPath, PowerShell no tratará ningún carácter como comodín, y es recomendable encerrar rutas con caracteres de escape en comillas simples para evitar interpretaciones no deseadas.

Sintaxis con Path y LiteralPath

powershell registro
Artículo relacionado:
Cómo editar el registro de Windows con PowerShell: guía y comandos prácticos

Parámetros clave y cómo usarlos bien

Además de Path, LiteralPath y Name, hay un conjunto de parámetros muy útiles que conviene dominar (Include, Exclude, Filter, Credential) y los parámetros comunes de PowerShell para controlar la salida y el comportamiento del cmdlet. A continuación se resumen los más importantes con sus detalles prácticos.

  Lista de claves genéricas para instalar Windows 11: guía completa 2024

-Path

Indica la ruta del elemento o elementos y admite comodines. Es el conjunto de parámetros por defecto, posición 0, y acepta entrada por canalización y por nombre de propiedad.

  • Tipo: String[]
  • Comodines:
  • Posición: 0
  • Obligatorio: Sí en su conjunto
  • Canalización: Sí (por valor y por nombre de propiedad)

-LiteralPath

Rutas exactas sin interpretar comodines. Úsalo cuando tu ruta contiene caracteres especiales o quieres evitar interpretaciones. Empléalo con comillas simples para ignorar secuencias de escape.

  • Tipo: String[]
  • Comodines: No
  • Alias: PSPath, LP
  • Obligatorio: Sí en su conjunto
  • Canalización: Por nombre de propiedad

-Name

Filtra qué propiedades quieres recuperar por nombre, admitiendo comodines. Es útil cuando solo necesitas una o varias propiedades concretas.

  • Tipo: String[]
  • Comodines:
  • Alias: PSProperty
  • Posición: 1

-Include y -Exclude

Permiten acotar qué elementos incluir o excluir, generalmente efectivos cuando el Path apunta al contenido de un contenedor (por ejemplo, ‘C:\\Windows\\*’). Ambos aceptan comodines y reciben una matriz de patrones.

  • -Include Tipo: String[] — Comodines: Sí — Predeterminado: None
  • -Exclude Tipo: String[] — Comodines: Sí — Predeterminado: None

-Filter

Aplica un filtro a nivel del proveedor, más eficiente que filtrar después en PowerShell. En el proveedor de FileSystem se basa en la sintaxis de comodines, y reduce el coste al traer ya los objetos filtrados.

  • Tipo: String
  • Comodines: Sí (según proveedor)

-Credential

Permite especificar credenciales (PSCredential) cuando el proveedor lo admite. Útil en escenarios remotos o con accesos protegidos.

  • Tipo: PSCredential
  • Predeterminado: Usuario actual
  • Comodines: No
  • Canalización por nombre de propiedad:

Parámetros comunes

Admite los parámetros comunes de PowerShell (-Debug, -ErrorAction, -Verbose, -WarningAction, -OutVariable, etc.), muy útiles para controlar errores, verbosidad y canalización de la información (consulta about_CommonParameters).

Entradas y salidas del cmdlet

Entrada: acepta cadenas (String) con rutas por canalización. Esto facilita pasar rutas generadas por otros cmdlets directamente a Get-ItemProperty.

Salida: devuelve un objeto por cada propiedad obtenida, cuyo tipo depende del proveedor (por ejemplo, FileInfo o DirectoryInfo en FileSystem; valores concretos en Registry). También pueden aparecer tipos como String, Boolean o DateTime según la propiedad que consultes.

Entradas y salidas en Get-ItemProperty

Ejemplos esenciales con FileSystem

Para comenzar, un caso típico es consultar las propiedades de un directorio o un archivo y, si lo deseas, formatear la salida para verla como lista. Esto te da una fotografía rápida de metadatos y marcas de tiempo.

Obtener información de una carpeta concreta:

Get-ItemProperty 'C:\\Windows'

Listar propiedades de un archivo y mostrarlas como lista:

Get-ItemProperty 'C:\\Test\\Weather.xls' | Format-List

Si quieres propiedades específicas de varios documentos, combina con Select-Object para una salida compacta. Por ejemplo, para documentos de Word en la carpeta de un usuario:

Get-ItemProperty 'C:\\Usuarios\\Administrador\\Documents\\*.docx' | Select-Object Name, LastWriteTime, Length

Para metadatos extendidos (como detalles EXIF en imágenes) puedes tirar del objeto COM ‘Shell.Application’ y leer propiedades avanzadas por índice. Es especialmente útil para fotos o ficheros multimedia:

$shell  = New-Object -ComObject 'Shell.Application'
$folder = $shell.Namespace('C:\\Photos')
$file   = $folder.ParseName('Vacation2023.jpg')
# Autor (índice 20, según la vista del shell)
$folder.GetDetailsOf($file, 20)

Trabajar con el Registro de Windows

El Registro es uno de los destinos más frecuentes para Get-ItemProperty. Desde información del sistema a listas de software, todo está a mano con las rutas adecuadas y el alias gp para agilizar. Para profundizar en temas relacionados, puedes consultar nuestro tutorial para editar el registro con PowerShell.

  4 grandes emuladores de Linux para tu PC con Windows 10

Leer valores de una clave de versión del sistema:

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'

Tomar una propiedad concreta (por ejemplo, el nombre del producto):

(Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion').ProductName

Recuperar un valor específico dentro de una subclave: la ruta indica la subclave y con -Name eliges el valor de esa entrada.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion' -Name 'ProgramFilesDir'

Obtener todos los nombres de valor y datos en una clave de PowerShell: verás propiedades como ApplicationBase, ConsoleHostAssemblyName, PowerShellVersion o RuntimeVersion.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\1\\PowerShellEngine'

Listar software instalado (64 bits): este patrón se usa muchísimo en inventariado. Si quieres profundizar en técnicas de auditoría en el registro, aprende también a listar programas instalados en Windows con PowerShell.

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

Listar software instalado (32 bits en SO de 64 bits): recuerda revisar la ruta de Wow6432Node para aplicaciones de 32 bits.

Get-ItemProperty 'HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

Otra variante clásica, ordenando por fecha de instalación:

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object InstallDate

Consultar versión de Windows con propiedades puntuales (ideal para informes rápidos):

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' \
  | Select-Object ProductName, ReleaseId, CurrentBuild

Historial de actualizaciones de Windows/upgrade del sistema (claves de Setup): consulta útil para auditoría de cambios de versión.

Get-ItemProperty -Path 'HKLM:\\SYSTEM\\Setup\\Source OS*' \
  | Select-Object PSChildName, ProductName, ReleaseId, DisplayVersion, CurrentBuild

Administración de IIS: Set-ItemProperty, New-ItemProperty, Get-Item

El proveedor de IIS permite gestionar sitios, aplicaciones, directorios virtuales y grupos de aplicaciones con los cmdlets integrados. Puedes crear con New-Item, inspeccionar con Get-Item y ajustar propiedades con Set-ItemProperty o agregar a colecciones con New-ItemProperty. Para ampliar tus conocimientos sobre gestión avanzada, te recomendamos visitar .

Ver propiedades clave de un sitio llamado ‘DemoSite’: la salida muestra estado, ruta física y bindings, entre otras propiedades principales.

Get-Item 'IIS:\\Sites\\DemoSite'

Consultar con detalle la colección de enlaces (bindings) de un sitio: usamos paréntesis para evaluar primero y después acceder a la colección.

(Get-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings').Collection

Inspeccionar propiedades complejas de un AppPool (por ejemplo, processModel) y leer su tiempo de inicio:

(Get-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel').startupTimeLimit

Agregar un nuevo binding a un sitio con New-ItemProperty: perfecto para colecciones como ‘bindings’.

New-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings' -Value @{ protocol = 'http'; bindingInformation = ':8081:' }

Cambiar una propiedad simple del sitio con Set-ItemProperty (por ejemplo, el nombre):

Set-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'name' -Value 'NewDemoSite'

Revertir a su nombre original es tan sencillo como aplicar de nuevo Set-ItemProperty con el valor anterior:

Set-ItemProperty 'IIS:\\Sites\\NewDemoSite' -Name 'name' -Value 'DemoSite'

Crear un usuario local con ADSI y ejecutar un AppPool bajo esa identidad, algo habitual en entornos que exigen identidades dedicadas:

$computer = 'WinNT://.'
$user     = $computer.Create('user', 'DemoAppPoolUser')
$user.SetPassword('Secret!!Pw3009')
$user.SetInfo()
Set-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel' -Value @{ userName = 'DemoAppPoolUser'; password = 'Secret!!Pw3009'; identityType = 3 }

Variación con Get-Item/Set-Item aprovechando autocompletado: muy cómoda si vas a tocar varias propiedades encadenadas.

$demoPool = Get-Item 'IIS:\\AppPools\\DemoAppPool'
$demoPool.processModel.userName    = 'DemoAppPoolUser'
$demoPool.processModel.password    = 'Secret!!Pw3009'
$demoPool.processModel.identityType = 3
$demoPool | Set-Item

Escenarios avanzados y remotos

Get-ItemProperty también destaca cuando se realiza consultas remotas, estados de activación, o incluso cuando se rastrea la conexión de dispositivos USB. Aquí tienes ideas prácticas para entornos reales. Para profundizar en las tareas de administración remota, puedes consultar nuestro tutorial sobre asignar IPs estáticas en Windows.

  Crear y personalizar pestañas en la cinta de opciones de Word

Consultar el Registro de forma remota con Invoke-Command: útil para recopilar información en varios servidores sin iniciar sesión en cada uno.

Invoke-Command -ComputerName 'SERVER01' -ScriptBlock {
  Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
}

Comprobar el estado de activación de Windows en varios equipos y traducir el código de LicenseStatus a texto legible:

$computers = 'WORKSTATION01','WORKSTATION02','WORKSTATION03'
foreach ($computer in $computers) {
  try {
    $status = Invoke-Command -ComputerName $computer -ScriptBlock {
      (Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform').LicenseStatus
    } -ErrorAction Stop
    $activationStatus = switch ($status) {
      0 {'Unlicensed'}
      1 {'Licensed'}
      2 {'Out-of-Box Grace Period'}
      3 {'Out-of-Tolerance Grace Period'}
      4 {'Non-Genuine Grace Period'}
      5 {'Notification'}
      6 {'Extended Grace'}
      default {'Unknown'}
    }
    @{ Computer = $computer; ActivationStatus = $activationStatus }
  }
  catch { @{ Computer = $computer; ActivationStatus = "Error: $_" } }
}

Para tareas de inventario de hardware y software, también puedes consultar nuestro tutorial sobre información del sistema y hardware con PowerShell.

Deja un comentario