Utilice PowerShell de forma eficaz para obtener un valor de registro
En este artículo, aprenderá a utilizar PowerShell para obtener un valor de registro y consultar entradas en un registro mediante diversos métodos.
¡Vámonos!
Requisitos previos
Todos los ejemplos de este artículo se demostrarán utilizando PowerShell 7.1, que en el momento de publicación de este artículo era la última versión. También puede utilizar Windows PowerShell 5.1 si lo desea. También debe tener algunos conocimientos básicos de las unidades PowerShell.
Es posible que algunos ejemplos no funcionen sin privilegios de administrador.
Obtener claves y valores de registro con Get-ChildItem
Una de las formas más sencillas de encontrar claves y valores de registro es utilizar el cmdlet Get-ChildItem. Esto utiliza PowerShell para obtener un valor de registro y más enumerando elementos en las unidades de PowerShell. En este caso, esa unidad PowerShell es la unidad HKLM que se encuentra al ejecutar Get-PSDrive.
Ejecute el siguiente comando en una consola PowerShell.
Get-ChildItem -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\'
En la siguiente captura de pantalla, puedes ver:
- La ruta de acceso completa a la clave de registro de WindowsUpdate
- La AU clave
- La lista de entradas de registro en la clave AU con los valores correspondientes.
Un breve comentario sobre la captura de pantalla anterior. Puede notar que el resultado es un poco engañoso. Normalmente, la salida de la consola de PowerShell representa las propiedades de un objeto. Get-ChildItem se comporta de manera diferente en este caso porque este objeto técnicamente no tiene propiedades. Se ejecutan comandos adicionales en segundo plano para producir el formato de visualización que ve.
Relacionado: Cómo comprobar si hay un reinicio pendiente en el Registro de Windows
Obtener valores de registro con Get-ItemProperty
Continuando con la misma clave de registro que antes, usemos el cmdlet Get-ItemProperty esta vez y hagamos que la salida sea más legible.
Usar Get-ItemProperty es mejor para obtener una propiedad de elemento obteniendo claves y sus valores dentro del registro. Ejecute el siguiente comando:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
En la captura de pantalla siguiente, ve una lista de claves y valores:
- Para el contenedor de registro AU
- Propiedades relacionadas con PowerShell que comienzan con PS
Como alternativa, también puede especificar la ruta del elemento de registro para obtener el mismo resultado sólo un poco más rápido utilizando .NET. El siguiente comando utiliza la clase de registro de .NET en PowerShell para obtener un valor de registro:
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
Obtener valores de registro con Get-ItemPropertyValue
Ahora es el momento de analizar los valores clave. Usando el cmdlet Get-ItemPropertyValue con el mismo contenedor de registro que antes, veamos el valor de la clave NoAutoUpdate. Ejecute el siguiente comando de PowerShell:
Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\' -Name NoAutoUpdate
Al utilizar Get-ItemPropertyValue, obtendrá un resultado más conciso que solo mostrará el valor y no el resto de la información que vio anteriormente.
Consultar el Registro sin unidades PS
A lo largo de este tutorial, ha estado utilizando unidades PowerShell para trabajar con el registro. Hacerlo de esta manera no es la única manera; ¡También puede aprovechar .NET y obtener información de registro a través de clases de .NET!
Por ejemplo, quizás necesite usar PowerShell para obtener un valor de registro de HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\: AutoUpate en una computadora remota.
Puede hacerlo con .NET mediante:
- Abrir la conexión de registro en la computadora remota.
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computername)2. Abrir la clave de registro específica que estás buscando.
$RegistryKey = $Registry.OpenSubKey("SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", $true)3. Usar el método GetValue() para consultar el valor del registro dentro de la clave de registro.
$RegistryKey.GetValue('AU')Usar unidades .NET en lugar de PowerShell es un poco más rápido y es una manera fácil de conectarse y usar PowerShell para consultar claves y valores de registro en computadoras remotas.
Probar los valores del registro con Test-Path
A veces sólo es necesario validar si hay un valor de registro presente. La forma de hacerlo es con el cmdlet Test-Path.
Continuando con el contenedor de WindowsUpdate, pruebe si el contenedor AU está presente ejecutando el siguiente comando de PowerShell:
Test-Path -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
Si el resultado es Verdadero, la clave o el contenedor existe. Pero, ¿qué sucede si necesita probar un valor o si existe una entrada? Construyamos una función personalizada para esta prueba:
Function Test-RegistryValue ($regkey, $name) {
if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) {
$true
} else {
$false
}
}Usando la función personalizada, ingresa una ruta y el nombre de la clave o contenedor, y el valor que está buscando, y la función personalizada devolverá Verdadero o Falso (3 ) como se muestra en la siguiente captura de pantalla:
Próximos pasos
Sepa que puede utilizar Get-ChildItem, Get-ItemProperty y Get -ItemPropertyValue en PowerShell para obtener un valor de registro y claves, ¿qué más puedes hacer?
Si desea obtener más información sobre cómo trabajar con el registro con PowerShell, consulte el artículo de Microsoft Docs titulado "Trabajar con claves de registro". También puede encontrar una excelente demostración sobre cómo configurar valores de registro en la publicación del blog de ATA Uso de Active Setup: Cómo establecer un valor de registro en todas las colmenas de usuarios.



