En esta segunda parte, aprenderemos como acceder a equipos remotos, con el objetivo de modificar el registro de Windows de la máquina remota, todo ello trabajando con PowerShell.
Como Administradores de Sistemas podemos utilizar PowerShell
para consultar, modificar o eliminar claves de registro. Para empezar necesitamos utilizar el comando Get-PSDrive
que permite consultar las unidades lógicas del sistema, incluyendo las de red, además de las entradas de registro:
- HKLM (HKEY_LOCAL_MACHINE)
- HKCU (HKEY_CURRENT_USER).
De la misma forma que nos movemos por la estructura de directorios de una Unidad, también podemos movernos por el registro. Veamos cómo realizarlo:
1 2 |
PS C:\Windows\system32> cd HKLM:\ PS HKLM:\> |
Para consultar los valores de una clave del registro utilizamos el cmdlet Get-Item
:
1 2 3 4 5 |
Get-Item -Path HKLM:\SOFTWARE\MiEmpresa\ Name Property ---- -------- MiEmpresa (default) : Version : 1.0 |
Ahora vamos a complicarlo aún más, ya que vamos a aprender cómo consultar una clave remota de otro equipo. Para ello vamos a utilizar un Bloque de Script
, que es una instancia con el comando que queremos ejecutar. Veamos por partes el comando que necesitamos ejecutar:
- Invoke-Command nos permite ejecutar el Bloque de Script.
- ComputerName nos permite indicar el nombre del equipo remoto.
- ScriptBlock el bloque con la consulta que queremos realizar. En este bloque utilizamos el cmdlet Get-ItemProperty para consultar la clave.
1 2 3 4 5 6 7 8 9 10 11 |
Invoke-Command -ComputerName EQUIPO01 -ScriptBlock { Get-ItemProperty -Path 'HKLM:\Software\MiEmpresa' -Name version} Version : 1.0 PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\MiEmpr esa PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software PSChildName : MiEmpresa PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry PSComputerName : EQUIPO01 RunspaceId : 14ea026c-d767-40cf-a8a9-83dbd934121 |
Ahora bien, es probable que no tengamos permisos para acceder remotamente al equipo. Por ello tenemos que tener en cuenta que el Servicio WinRM
de Windows debe estar activo y ejecutándose. Podemos habilitarlo manualmente e incluir una excepción el el Firewall con el siguiente comando:
1 |
winrm qc |
- q es la opción quickconfig que permite configurar el equipo para que acepte solicitudes de WS-Management de otros equipos.
- c es la opción config que permite establecer configuración de servicio y cliente de WinRM (habilitar la excepción de firewall WinRM).
1 |
Winrm qc |
Una vez hemos habilitado el Servicio WinRM y la excepción correspondiente en el Firewall, podemos volver a intentarlo.
Podemos acceder al Firewall y buscar la Regla Administración remota de Windows (HTTP de entrada). En la pestaña ámbito podemos limitar las IPs desde las cuales se podrá acceder remotamente al equipo.
Modificación de entradas y claves de registro
Hemos aprendido como consultar entradas del registro, pero si queremos editarlas y modificarlas tendremos que ir un paso más allá. Para empezar tenemos que acceder al equipo con unas credenciales locales o de dominio. Para realizar este proceso utilizaremos el comando Enter-PSSession
que nos va a permitir conectar remotamente a un equipo.
1 2 |
PS C:\Users\userxxxx> Enter-PSSession equipo -Credential domain\user [vm01]: PS C:\Users\user\Documents> |
Para crear una nueva entrada en el registro utilizamos el comando New-Item
, indicando el Path donde deseamos crear la nueva entrada.
1 |
New-Item -Path HKLM:\SOFTWARE\MiEmpresa\ -Name Software01 |
Para crear una nueva clave en la entrada que acabamos de crear utilizamos New-ItemProperty
, indicando el Path donde deseamos crear la nueva entrada, el nombre de la propiedad y su valor.
1 2 3 4 5 6 7 8 9 |
[vm01]: PS C:\Users\206115\Documents> New-ItemProperty -Path "HKLM:\SOFTWARE\MiEmpresa\Software01" -Name "Path" -Value "C:\Archivos de programa\MiEmpresa\Software01" -PropertyType "String" Path : C:\Archivos de programa\MiEmpresa\Software01 PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\MiEmpresa\Software01 PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\MiEmpresa PSChildName : Software01 PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry |
El resultado será el siguiente:
Eliminación de entradas y claves de registro
Para eliminar claves y valores utilizamos Remove-ItemProperty
. Veamos un ejemplo de cómo realizar este proceso:
1 |
[vm01]: PS C:\Users\userXXX\Documents> Remove-ItemProperty -Path HKLM:\SOFTWARE\MiEmpresa\Software01\ -Name "Path" |
Y para eliminar entradas utilizamos Remove-Item
.
1 |
[vm01]: PS C:\Users\userXXX\Documents> Remove-Item -Path HKLM:\SOFTWARE\MiEmpresa\Software01\ |
También tenemos la opción de renombrar entradas y claves de registro con los comandos Rename-Item y Rename-ItemProperty.
Recuerda que el registro de Windows es delicado por lo que antes de realizar cualquier cambio, deberías realizar copias de seguridad o implementar dichos cambios antes en una máquina virtualizada, con el fin de comprobar que no repercutan negativamente en el sistema.