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.
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.
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 .
OGet-Item -Path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching
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
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
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.
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")
Entonces, miramos ejemplos típicos del uso de PowerShell para interactuar con el registro de Windows.