A partir de su primera versión, PowerShell ofrece al administrador un amplio conjunto de herramientas para interactuar con el registro del sistema de Windows. Si es necesario, todas las operaciones típicas con el registro se pueden realizar no en la antigua interfaz de Regedit o reg.exe, sino en el símbolo del sistema de PowerShell. En diferentes guiones y escenarios es indispensable. En este artículo, consideraremos cómo crear, editar o eliminar claves y parámetros del registro de Windows, buscar algo o conectarnos al registro en una computadora remota usando PowerShell.

Navegación del registro con PowerShell

Trabajar con el registro en PowerShell es similar a trabajar con archivos comunes en un disco local.

Visualice la lista de unidades disponibles:

get-psdrive

Como puede ver, el proveedor integrado permite acceder al contenido de dos ramas del registro: HKEY_CURRENT_USER (HKCU) y HKEY_LOCAL_MACHINE (HKLM). Las ramas del registro se direccionan como unidades (HKLM: y HKCU: ). Por ejemplo, para ir a la raíz de HKLM, ejecute este comando:

cd HKLM:

Puede ir a la rama específica del registro (por ejemplo, al responsable de la configuración de las actualizaciones automáticas de controladores) usando el comando Set-Location (alias - sl)

Set-Location -Path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching

Mostrar el contenido de la clave:

dir

O

Get-ChildItem

Abra la misma rama en el Editor del registro. Como puede ver, el comando ha mostrado solo la información sobre las subclaves, no los parámetros de la rama actual.

elemento de registro

El asunto es que, desde el punto de vista de PowerShell, una rama de registro (una clave) es un archivo análogo, y los parámetros almacenados en esta clave de registro son las propiedades de este archivo.

Entonces, para obtener los parámetros de esta rama, use Obtiene el objeto cmdlet:

Get-Item .
O
Get-Item -Path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching

registro de obtención de elementos

Como puede ver, la clave DriverSearching solo tiene un parámetro: SearchOrderConfig con su valor igual a 0.

Para abordar el parámetro clave específico, Get-ItemProperty Se utiliza el cmdlet. Por ejemplo, asigne el contenido de la rama a la variable y obtenga el valor del parámetro:

$DriverUpdate = Get-ItemProperty –Path ‘HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching’
$DriverUpdate.SearchOrderConfig

Get-ItemProperty

Tenemos que el valor del parámetro SearchOrderConfig es igual a 1.

Cómo cambiar el valor del registro

Para cambiar el valor del parámetro SearchOrderConfig, use el cmdlet Set-ItemProperty:

Set-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching' -Name SearchOrderConfig -Value 0

Asegúrese de que el valor haya cambiado:

Get-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching' -Name SearchOrderConfig

Set-ItemProperty

Cómo crear un nuevo parámetro o clave de registro

Para agregar una nueva clave de registro, use Nuevo artículo mando. Cree una nueva clave con el nombre NewKey:

$HKCU_Desktop= "HKCU:Control PanelDesktop"
New-Item –Path $HKCU_Desktop –Name NewKey

Agregue un nuevo parámetro de cadena con el nombre SuperParamString y el valor file_name.txt para la clave creada:

New-ItemProperty -Path $HKCU_DesktopNewKey -Name "SuperParamString" -Value ”file_name.txt”  -PropertyType "String"

Asegúrese de que la nueva clave y parámetro hayan aparecido en el registro.

powershell crear parámetro de registro

Eliminar una clave de registro o un parámetro

Elimine el parámetro SuperParamString creado anteriormente:

$HKCU_Desktop= "HKCU:Control PanelDesktop"
Remove-ItemProperty –Path $HKCU_DesktopNewKey –Name "SuperParamString"

Luego elimine toda la rama:

Remove-Item –Path $HKCU_DesktopNewKey –Recurse

Nota. –La tecla recursiva muestra que todas las subclaves deben eliminarse de forma recursiva sin confirmación.

Para eliminar todos los elementos de la rama, pero no la rama en sí, el comando se ve así:

Remove-Item –Path $HKCU_DesktopNewKey* –Recurse

Cómo cambiar el nombre de una clave o un parámetro

Para cambiar el nombre del parámetro, use este comando:

Rename-ItemProperty –path ‘HKCU:Control PanelDesktopNewKey’ –name "SuperParamString" –newname “OldParamString”

De la misma manera, puede cambiar el nombre de la clave de registro:

Rename-Item -path 'HKCU:Control PanelDesktopNewKey' OldKey

Buscar en el registro con PowerShell

PowerShell le permite buscar en el registro. El siguiente script busca en HKCU: Control Panel Desktop los parámetros, cuyos nombres contienen la clave * dpi *.

$Path = (Get-ItemProperty ‘HKCU:Control PanelDesktop’)
$Path.PSObject.Properties | ForEach-Object {
If($_.Name -like '*dpi*'){
Write-Host $_.Name ' = ' $_.Value
}
}

Acceso remoto al registro mediante PowerShell

PowerShell le permite acceder al registro desde una computadora remota. Puede conectarse a una computadora remota usando WinRM (Invoke-Command o Enter-PSSession):

Invoke-Command –ComputerName srv-fs1 –ScriptBlock { Get-ItemProperty -Path 'HKLM:SystemSetup' -Name WorkingDirectory}

O usando una conexión de registro remoto (RemoteRegistry debe estar habilitado)

$Server = "lon-fs1"
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$RegKey= $Reg.OpenSubKey("SystemSetup")
$RegValue = $RegKey.GetValue("WorkingDirectory")

Consejo. Si tiene que crear / modificar un determinado parámetro de registro en varios equipos de dominio, es más fácil utilizar las funciones de GPO.

Entonces, miramos ejemplos típicos del uso de PowerShell para interactuar con el registro de Windows.

Recomendado para ti