> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/es/getting-started/migration.md).

# Migrar y restaurar

A menudo resulta deseable migrar la configuración de un servidor de PowerShell Universal de una máquina a otra. Esto puede deberse a un cambio de infraestructura o a una restauración desde una copia de seguridad. Puede ser por actualizaciones del sistema operativo o por mantenimiento general del centro de datos.

Este documento explica los pasos necesarios para migrar la configuración de PowerShell Universal a otra máquina.

Recomendamos detener el servicio de PowerShell Universal antes de realizar la migración o la restauración.

```powershell
Stop-Service 'PowerShellUniversal'
```

Según el tipo de migración o restauración, es posible que no necesite realizar todas estas acciones.

## Datos de configuración

Los ficheros de datos de configuración se almacenan de forma predeterminada en `%ProgramData%\UniversalAutomation\Repository`. Estos incluirán funciones como APIs, Scripts y Apps. Todo el directorio es necesario para que funcione la configuración del sistema de destino.

Puede copiar la carpeta manualmente o mediante PowerShell. Asegúrese de incluir todos los subdirectorios.

```powershell
Copy-Item $ENV:ProgramData\UniversalAutomation\Repository \\newServer\C$\ProgramData\UniversalAutomation\Repository -Recurse
```

## Base de datos

La migración de la base de datos dependerá del tipo de base de datos utilizado.

### SQLite

Deberá copiar el fichero de base de datos SQLite a la ubicación de base de datos configurada o predeterminada. En una instalación predeterminada, será `%ProgramData%\UniversalAutomation\database.db`. La cuenta de máquina o la cuenta de servicio de destino necesitará acceso de lectura y escritura a este fichero de base de datos.

```powershell
Copy-Item $ENV:ProgramData\UniversalAutomation\database.db \\newServer\C$\ProgramData\UniversalAutomation\database.db 
```

Si está restaurando desde una copia de seguridad, es posible que deba [Degradar](/powershell-universal/es/getting-started/downgrade.md) el esquema si actualizó la versión.

### SQL y PostgreSQL

Como estas bases de datos se almacenan fuera del servidor de PowerShell Universal, no necesita realizar una migración de la base de datos en sí. Deberá asegurarse de que el servidor de destino tenga acceso de red al host de SQL.

Si está restaurando desde una copia de seguridad, es posible que deba [Degradar](/powershell-universal/es/getting-started/downgrade.md) el esquema si actualizó la versión.

## Configuración de la aplicación

El fichero `appsettings.json` de PowerShell Universal es necesario para proporcionar la configuración de servidor adecuada a la plataforma. De forma predeterminada, se almacena en `%ProgramData%\PowerShellUniversal\appsettings.json`. Deberá copiarlo al nuevo servidor en la misma ubicación.

Este fichero contiene ajustes de configuración como el certificado HTTP, la autenticación, la configuración de sincronización de git, las opciones de configuración de la API y más.

```powershell
Copy-Item $ENV:ProgramData\PowerShellUniversal\appsettings.json \\newServer\C$\ProgramData\PowerShellUniversal\appsettings.json 
```

Los ficheros appsettings.json no cambian entre actualizaciones y probablemente no necesite realizar esta acción durante una restauración.

## Bóvedas de secretos

PowerShell Universal incluye 3 bóvedas de secretos integradas que podrían necesitar migración. La bóveda de base de datos se incluye con la migración de la base de datos y no requiere pasos adicionales. Si está realizando una restauración, es poco probable que necesite realizar estas operaciones de restauración a menos que las bóvedas de secretos se hayan corrompido.

### PSUSecretStore

La bóveda `PSUSecretStore` utiliza el [módulo SecretStore](https://learn.microsoft.com/en-us/powershell/utility-modules/secretmanagement/get-started/using-secretstore?view=ps-modules) de Microsoft. Este módulo almacena secretos en disco mediante cifrado simétrico. Se incluye una clave de cifrado predeterminada con las instalaciones de PowerShell Universal. Si la clave se actualizó, la nueva clave estará en el fichero appsettings.json que migró en el paso anterior. También deberá mover el almacén de secretos físico al sistema de ficheros del nuevo servidor.

El módulo SecretStore utiliza una ubicación de almacenamiento específica del usuario para garantizar que se apliquen las ACL en los propios ficheros. Deberá asegurarse de copiar el contenido de la bóveda a la cuenta del usuario que ejecutará PowerShell Universal en el nuevo sistema.

```powershell
Copy-Item $Env:LOCALAPPDATA\Microsoft\PowerShell\secretmanagement\localstore \\newServer\C$\Users\myServiceAccount\AppData\Local\Microsoft\PowerShell\secretmanagement\localstore 
```

### BuiltInLocalVault

El `BuiltInLocalVault` solo está disponible en Windows y utiliza el Administrador de credenciales para almacenar secretos. Deberá recrear estos secretos en el almacén del Administrador de credenciales del nuevo sistema.

Dentro del Administrador de credenciales, encontrará los secretos de PowerShell almacenados con el prefijo `ps:`.

<figure><img src="/files/jpD0yjllkFGUXWPNbIfj" alt=""><figcaption></figcaption></figure>

Aunque no es posible extraer credenciales directamente desde la interfaz del Administrador de credenciales, puede utilizar los módulos de Secret Management directamente. Para recuperar secretos, puede hacer lo siguiente.

```powershell
Install-Module Micorosoft.PowerShell.SecretManagement
Install-Module SecretManagement.JustinGrote.CredMan
Register-SecretVault -Name 'BuiltInLocalVault' -ModuleName SecretManagement.JustinGrote.CredMan
Get-SecretInfo -Vault BuiltInLocalVault
$Secret = Get-Secret -Name 'TestApiKey' -Vault 'BuiltInLocalVault' -AsPlainText
```

En el nuevo servidor, puede hacer lo contrario y llamar a `Set-Secret`. Tenga en cuenta que estos comandos deben ejecutarse como la cuenta de servicio que ejecuta PowerShell Universal para poder almacenarlos correctamente en la cuenta del Administrador de credenciales del usuario.

## Autenticación

Ciertos tipos de autenticación requerirán configuración fuera de PowerShell Universal. A menos que esté moviendo la máquina que ejecuta PowerShell Universal o cambiando las URLs accesibles, no necesitará realizar estas acciones.

### OpenID Connect

Asegúrese de que las URLs de inicio de sesión correctas estén configuradas en su proveedor de identidad (p. ej., Azure AD u Okta) si el nombre de host del servidor va a cambiar. Sin URLs de inicio de sesión correctamente configuradas, los usuarios no podrán iniciar sesión en el nuevo sistema.

### Windows

La [autenticación de Windows](/powershell-universal/es/seguridad/enterprise-security/windows-sso.md) requiere la configuración de un SPN para la cuenta de servicio que ejecuta el servicio de PowerShell Universal. Asegúrese de que este SPN esté en su lugar antes de intentar utilizar la autenticación de Windows con el nuevo sistema.

## Otros recursos y consideraciones

Puede haber otros recursos que PowerShell Universal utilice en el sistema y que deban tenerse en cuenta al migrar o restaurar servidores. Normalmente, no necesitará preocuparse por estos recursos durante una restauración, ya que deberían permanecer iguales si la máquina no ha cambiado.

* Módulos de PowerShell
* Variables de entorno
* Privilegios de cuentas locales
* Permisos del sistema de ficheros
* Configuración del proxy
* Certificados
* Claves SSH o credenciales de Git
* Configuración de DNS

## Ficheros de la aplicación

Una vez realizados todos los pasos siguientes, ya puede instalar PowerShell Universal en el nuevo servidor. Si está degradando durante una restauración, siga la documentación de [Degradar ](/powershell-universal/es/getting-started/downgrade.md).

### MSI \ Kestrel

El paquete MSI de PowerShell Universal instala la plataforma como un servicio de Windows que aloja su propio servidor web llamado Kestrel. Para instalar el servicio, [descargue el MSI](https://powershelluniversal.com/downloads) y ejecútelo. Recomendamos utilizar exactamente la misma versión que el servidor de origen.

Durante la instalación del MSI, deje toda la configuración con los valores predeterminados. Recomendamos dejar la cuenta de servicio en blanco y desmarcar la casilla que indica iniciar el servicio de PowerShell Universal una vez completada la instalación.

Cuando la instalación se complete, el servicio se habrá creado pero no estará en ejecución. Abra el Administrador de control de servicios (`services.msc`) y establezca la cuenta de servicio para el servicio de PowerShell Universal. Inicie el servicio.

## Depuración de problemas

Al migrar un servicio de PowerShell Universal, puede encontrarse con problemas derivados de diferencias de configuración entre los dos sistemas. A continuación se indican los lugares donde buscar más información.

### Visor de eventos

si el servicio se inicia y se detiene, puede haber un problema con el acceso a la base de datos. Recomendamos consultar el registro de Aplicación en el Visor de eventos. PowerShell Universal notificará dos errores de aplicación que incluirán .NET en el nombre. El segundo de los dos errores proporcionará una excepción legible con más detalles.

### Registros del sistema

PowerShell Universal escribirá los registros del sistema en el directorio %ProgramData%\PowerShellUniversal. Busque cadenas que empiecen por `[ERR]` para recopilar más información sobre los problemas de la instalación.

### Notificaciones

Después de migrar el servicio, compruebe si hay notificaciones de error que puedan indicar una configuración incorrecta del sistema.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/es/getting-started/migration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
