> 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/it/getting-started/migration.md).

# Migrazione e ripristino

Spesso è opportuno migrare la configurazione di un server PowerShell Universal da una macchina a un'altra. Ciò può essere dovuto a un cambiamento di infrastruttura o a un ripristino da backup. Può trattarsi di aggiornamenti del sistema operativo o di manutenzione generale del data center.

Questo documento illustra i passaggi necessari per migrare la configurazione di PowerShell Universal su un'altra macchina.

Consigliamo di arrestare il servizio PowerShell Universal prima di eseguire la migrazione o il ripristino.

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

A seconda del tipo di migrazione o ripristino, potrebbe non essere necessario eseguire tutte queste azioni.

## Dati di configurazione

I file dei dati di configurazione sono archiviati per impostazione predefinita in `%ProgramData%\UniversalAutomation\Repository`. Includono funzionalità come API, Script e App. L'intera directory è necessaria affinché la configurazione del sistema di destinazione funzioni.

È possibile copiare la cartella manualmente oppure tramite PowerShell. Si assicuri di includere tutte le sottodirectory.

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

## Database

La migrazione del database dipenderà dal tipo di database utilizzato.

### SQLite

Sarà necessario copiare il file del database SQLite nella posizione del database configurata o predefinita. In un'installazione predefinita, sarà `%ProgramData%\UniversalAutomation\database.db`. L'account macchina o l'account di servizio di destinazione dovrà avere accesso in lettura e scrittura a questo file di database.

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

Se sta effettuando un ripristino da backup, potrebbe essere necessario eseguire il [Downgrade](/powershell-universal/it/getting-started/downgrade.md) dello schema se ha aggiornato la versione.

### SQL e PostgreSQL

Poiché questi database sono archiviati all'esterno del server PowerShell Universal, non è necessario eseguire una migrazione del database stesso. Sarà necessario assicurarsi che il server di destinazione disponga dell'accesso di rete all'host SQL.

Se sta effettuando un ripristino da backup, potrebbe essere necessario eseguire il [Downgrade](/powershell-universal/it/getting-started/downgrade.md) dello schema se ha aggiornato la versione.

## Impostazioni dell'applicazione

Il file `appsettings.json` di PowerShell Universal è necessario per fornire alla piattaforma le impostazioni server appropriate. Per impostazione predefinita, è archiviato in `%ProgramData%\PowerShellUniversal\appsettings.json`. Sarà necessario copiarlo nella stessa posizione sul nuovo server.

Questo file contiene impostazioni di configurazione quali certificato HTTP, autenticazione, impostazioni di sincronizzazione git, opzioni di configurazione delle API e altro ancora.

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

I file appsettings.json non cambiano tra un aggiornamento e l'altro e probabilmente non sarà necessario eseguire questa azione durante un ripristino.

## Casseforti dei segreti

PowerShell Universal include 3 casseforti dei segreti integrate che potrebbero dover essere migrate. La cassaforte del database è inclusa nella migrazione del database e non richiede passaggi aggiuntivi. Se sta eseguendo un ripristino, è improbabile che debba eseguire queste operazioni di ripristino, a meno che le casseforti dei segreti non si siano danneggiate.

### PSUSecretStore

La cassaforte `PSUSecretStore` utilizza il [modulo SecretStore](https://learn.microsoft.com/en-us/powershell/utility-modules/secretmanagement/get-started/using-secretstore?view=ps-modules) di Microsoft. Questo modulo archivia i segreti su disco utilizzando la crittografia simmetrica. Una chiave di crittografia predefinita è inclusa nelle installazioni di PowerShell Universal. Se la chiave è stata aggiornata, la nuova chiave si troverà nel file appsettings.json migrato nel passaggio precedente. Sarà inoltre necessario spostare l'archivio fisico dei segreti nel file system del nuovo server.

Il modulo SecretStore utilizza una posizione di archiviazione specifica per l'utente per garantire che le ACL vengano applicate ai file stessi. Sarà necessario assicurarsi di copiare il contenuto della cassaforte nell'account dell'utente che eseguirà PowerShell Universal sul nuovo sistema.

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

### BuiltInLocalVault

`BuiltInLocalVault` è disponibile solo su Windows e utilizza Credential Manager per archiviare i segreti. Sarà necessario ricreare questi segreti nell'archivio di Credential Manager sul nuovo sistema.

All'interno di Credential Manager, troverà i segreti di PowerShell archiviati con il prefisso `ps:`.

<figure><img src="/files/4gNR6D4HNbmkHeYW619E" alt=""><figcaption></figcaption></figure>

Sebbene non sia possibile estrarre le credenziali direttamente dall'interfaccia utente di Credential Manager, è possibile utilizzare direttamente i moduli Secret Management. Per recuperare i segreti, può procedere come segue.

```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
```

Sul nuovo server, può eseguire l'operazione inversa e chiamare `Set-Secret`. Si noti che questi comandi devono essere eseguiti come account di servizio che esegue PowerShell Universal, affinché vengano archiviati correttamente nell'account Credential Manager dell'utente.

## Autenticazione

Alcuni tipi di autenticazione richiederanno una configurazione esterna a PowerShell Universal. A meno che non stia spostando la macchina che esegue PowerShell Universal o modificando gli URL accessibili, non sarà necessario eseguire queste azioni.

### OpenID Connect

Si assicuri che gli URL di accesso corretti siano configurati nel suo provider di identità (ad es. Azure AD o Okta) se il nome host del server sta cambiando. Senza URL di accesso configurati correttamente, gli utenti non potranno accedere al nuovo sistema.

### Windows

L'[autenticazione Windows](/powershell-universal/it/sicurezza/enterprise-security/windows-sso.md) richiede la configurazione di un SPN per l'account di servizio che esegue il servizio PowerShell Universal. Si assicuri che questo SPN sia presente prima di tentare di utilizzare l'autenticazione Windows con il nuovo sistema.

## Altre risorse e considerazioni

Potrebbero esserci altre risorse utilizzate da PowerShell Universal sul sistema di cui tenere conto durante la migrazione o il ripristino dei server. In genere, non dovrà preoccuparsi di queste risorse durante un ripristino, poiché dovrebbero rimanere invariate se la macchina non è cambiata.

* Moduli PowerShell
* Variabili d'ambiente
* Privilegi degli account locali
* Autorizzazioni del file system
* Configurazione del proxy
* Certificati
* Chiavi SSH o credenziali Git
* Impostazioni DNS

## File dell'applicazione

Una volta eseguiti tutti i passaggi seguenti, può installare PowerShell Universal sul nuovo server. Se sta effettuando un downgrade durante un ripristino, segua la documentazione [Downgrade ](/powershell-universal/it/getting-started/downgrade.md).

### MSI \ Kestrel

Il pacchetto MSI di PowerShell Universal installa la piattaforma come servizio Windows che ospita il proprio web server chiamato Kestrel. Per installare il servizio, [scarichi l'MSI](https://powershelluniversal.com/downloads) ed esegua il file. Consigliamo di utilizzare esattamente la stessa versione del server di origine.

Durante l'installazione dell'MSI, lasci tutte le impostazioni predefinite. Consigliamo di lasciare vuoto l'account di servizio e di deselezionare la casella che indica di avviare il servizio PowerShell Universal al termine dell'installazione.

Al termine dell'installazione, il servizio sarà creato ma non in esecuzione. Apra Service Control Manager (`services.msc`) e imposti l'account di servizio per il servizio PowerShell Universal. Avvii il servizio.

## Risoluzione dei problemi

Durante la migrazione di un servizio PowerShell Universal, potrebbe riscontrare problemi derivanti da differenze di configurazione tra i due sistemi. Di seguito sono indicati i punti in cui cercare ulteriori informazioni.

### Visualizzatore eventi

Se il servizio si avvia e si arresta, potrebbe esserci un problema con l'accesso al database. Consigliamo di consultare il registro Applicazione all'interno del Visualizzatore eventi. PowerShell Universal segnalerà due errori dell'applicazione che includeranno .NET nel nome. Il secondo dei due errori fornirà un'eccezione leggibile con maggiori dettagli.

### Log di sistema

PowerShell Universal scriverà i log di sistema nella directory %ProgramData%\PowerShellUniversal. Cerchi le stringhe che iniziano con `[ERR]` per raccogliere maggiori informazioni sui problemi relativi all'installazione.

### Notifiche

Dopo la migrazione del servizio, verifichi la presenza di eventuali notifiche di errore che potrebbero indicare una configurazione errata 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/it/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.
