> 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/config/environments.md).

# Ambienti

Configuri gli ambienti di esecuzione di PowerShell Universal, incluse le versioni PowerShell isolate, gli ambienti virtuali, l'esecuzione tramite Devolutions Agent e la modalità minima.

Per impostazione predefinita, l'autenticazione e l'autorizzazione avvengono all'interno del processo `Universal.Server.exe`. Per eseguirle da un processo diverso, è possibile selezionare un ambiente impostando il parametro `-SecurityEnvironment` di `Set-PSUSetting` in `settings.ps1`. Consulti [Sicurezza](/powershell-universal/it/sicurezza/security.md#environment) per maggiori informazioni su questo aspetto.

Gli ambienti di esecuzione definiscono il runtime PowerShell, i moduli, le variabili e le impostazioni di esecuzione utilizzati da script, API, app, processi di automazione e processi di sicurezza. Li gestisca in **Gestisci > Ambienti > Ambienti** o in `environments.ps1`.

## Scegliere un tipo di ambiente

| Tipo                   | Utilizzo                                                                                                                                                                  |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Integrato              | Viene eseguito direttamente nel processo del server PowerShell Universal.                                                                                                 |
| PowerShell 7           | Utilizza l'host PowerShell 7 incluso in PowerShell Universal.                                                                                                             |
| PowerShell 7 (Isolato) | Utilizza [multi-pwsh](https://github.com/Devolutions/multi-pwsh) per eseguire una versione di PowerShell 7 selezionata, facoltativamente in un ambiente virtuale gestito. |
| Windows PowerShell 5.1 | Utilizza il runtime di Windows PowerShell installato sul server.                                                                                                          |
| Personalizzato         | Avvia l'eseguibile e gli argomenti specificati.                                                                                                                           |
| Container              | Viene eseguito nell'immagine del container Devolutions Agent configurata.                                                                                                 |

Tutti gli ambienti possono definire moduli, variabili PowerShell, voci di `PSModulePath`, script di avvio e impostazioni avanzate del runspace. Selezioni un ambiente per nome durante la configurazione di uno script, una pianificazione, un'API, un'app, un terminale o un ambiente di sicurezza.

## Configurare le risorse

Utilizzi la scheda **Risorse** durante la modifica di un ambiente per configurare queste impostazioni:

* **Moduli**: nomi di moduli o percorsi di file di modulo che PowerShell Universal importa quando crea i runspace.
* **Variabili**: nomi delle variabili di PowerShell Universal da rendere disponibili. Utilizzi `*` per includere tutte le variabili corrispondenti.
* **PSModulePath**: percorsi aggiuntivi di ricerca dei moduli per l'ambiente.
* **Script di avvio**: script relativi al repository che vengono eseguiti quando viene creato un nuovo runspace.

Gli script di avvio vengono eseguiti una volta per ogni nuovo runspace. Vengono eseguiti una volta all'avvio di un processo, ma possono essere eseguiti più spesso per API e app, man mano che i relativi runspace vengono creati. Le variabili della piattaforma non sono disponibili negli script di avvio.

## Ambienti isolati PowerShell 7

Un ambiente isolato utilizza multi-pwsh anziché l'host PowerShell incluso in PowerShell Universal. Scelga questo tipo quando uno script richiede una release specifica di PowerShell 7 o un isolamento di processo più forte dall'SDK PowerShell del server e dagli assembly caricati.

Ogni ambiente isolato deve avere una **versione PowerShell**. PowerShell Universal rifiuta un ambiente isolato che non ne specifica una.

### Installare e selezionare le versioni PowerShell

1. Vada in **Gestisci > Ambienti > Versioni PowerShell**.
2. Inserisca un selettore multi-pwsh come `stable`, `preview`, `lts` o `7.4`, quindi selezioni **Installa**.
3. Aggiorni l'elenco delle versioni. Mostra ogni versione, il suo percorso, l'ambito e se è disponibile per gli ambienti isolati.
4. Crei o modifichi un ambiente, selezioni **PowerShell 7 (Isolato)** e selezioni una versione isolata installata.

Solo le versioni contrassegnate come **Isolato** sono selezionabili per gli ambienti isolati. È possibile rimuovere le versioni installate tramite multi-pwsh dalla stessa scheda quando non sono più necessarie.

Crei un ambiente isolato nella configurazione con una versione concreta o un selettore multi-pwsh:

```powershell
New-PSUEnvironment `
    -Name 'Isolated PowerShell 7.4' `
    -Type Isolated `
    -PowerShellVersion '7.4'
```

## Ambienti virtuali gestiti

Abiliti **Virtuale** su un ambiente isolato per eseguirlo in un ambiente virtuale multi-pwsh gestito. PowerShell Universal crea l'ambiente virtuale prima che venga utilizzato e lo seleziona ogni volta che l'ambiente avvia un processo.

L'identità dell'ambiente virtuale gestito è derivata dal nome dell'ambiente, dalla versione PowerShell, dai moduli, da `PSModulePath` e dalle impostazioni degli script di avvio. La modifica di tali impostazioni crea una nuova identità gestita. PowerShell Universal elimina gli ambienti virtuali gestiti che non sono più referenziati da un ambiente.

Utilizzi un ambiente virtuale quando desidera che lo stato del runtime multi-pwsh rimanga isolato dagli altri ambienti. Anche gli ambienti container utilizzano un ambiente virtuale gestito quando **Virtuale** è abilitato o quando l'ambiente ha moduli configurati.

```powershell
New-PSUEnvironment `
    -Name 'Isolated PowerShell 7.4 virtual' `
    -Type Isolated `
    -PowerShellVersion '7.4' `
    -Virtual `
    -Modules @('Az.Accounts')
```

### Supporto di Devolutions Agent

Quando un processo è destinato a un Devolutions Agent connesso, PowerShell Universal utilizza il selettore della versione PowerShell dell'ambiente con l'eseguibile multi-pwsh dell'agent. Per un ambiente isolato o container che utilizza un ambiente virtuale gestito, il server esporta tale ambiente virtuale e l'agent lo importa prima dell'avvio del processo.

Questo trasferimento è automatico e utilizza un URL di download autenticato di breve durata. L'agent riutilizza un ambiente virtuale corrispondente già importato. Configuri normalmente lo stesso ambiente, quindi scelga il Devolutions Agent o il gruppo di computer nelle opzioni di esecuzione o di pianificazione.

## Ambienti minimi PowerShell 7

Abiliti **Minimo** su un ambiente PowerShell 7 per eseguire i processi in un sottoprocesso PowerShell dedicato tramite PowerShell remoting locale. Questa modalità evita di caricare i normali assembly di hosting di PowerShell Universal nel processo dello script, il che è utile per script e moduli che presentano conflitti di binding degli assembly con il server.

La modalità minima è disponibile per gli ambienti PowerShell 7, Windows PowerShell 5.1 e Personalizzato. PowerShell Universal conserva l'output formattato del processo e l'output della pipeline delle esecuzioni PowerShell 7 minime, quindi l'output rimane disponibile nel log del processo e nella cronologia dei processi.

Gli ambienti minimi presentano comunque limitazioni importanti:

* Non supportano feedback, segnalazione dell'avanzamento, segreti o cmdlet integrati di Universal.
* I valori delle variabili non segrete configurate vengono forniti come variabili d'ambiente di processo.
* Utilizzi il normale ambiente PowerShell 7 quando lo script richiede la piena integrazione con l'host PowerShell Universal.

Per abilitarla nella console di amministrazione, modifichi un ambiente PowerShell 7 e selezioni **Minimo**. Nella configurazione:

```powershell
New-PSUEnvironment `
    -Name 'PowerShell 7 Minimal' `
    -Type PowerShell7 `
    -Minimal `
    -Variables @('*')
```

Un ambiente minimo Personalizzato può eseguire un altro eseguibile a riga di comando. Utilizzi `{scriptPath}` nei suoi argomenti quando l'eseguibile deve ricevere il percorso dello script risolto.

```powershell
New-PSUEnvironment `
    -Name 'Python' `
    -Path 'python' `
    -Arguments '{scriptPath}' `
    -Variables @('*') `
    -Minimal
```

## Ambienti standard

### Integrato

L'ambiente Integrato esegue gli script direttamente nel processo del server PowerShell Universal. Evita la serializzazione tra processi ed è semplice da configurare, ma non può essere eseguito con credenziali alternative né utilizzare un'altra versione di PowerShell. Poiché gli script condividono il processo del server, gli script problematici possono influire sulla stabilità della piattaforma.

L'ambiente Integrato è sempre disponibile. È comunque possibile configurare moduli o runspace persistenti per esso in `environments.ps1`:

```powershell
New-PSUEnvironment -Name 'Integrated' -Path 'none' -Modules @('ActiveDirectory')
```

### PowerShell 7

L'ambiente standard PowerShell 7 utilizza l'host PowerShell incluso in PowerShell Universal. È l'impostazione predefinita consigliata per un'ampia compatibilità con i moduli di terze parti. Se uno script richiede Windows Forms o un'altra dipendenza esclusiva di Windows PowerShell, utilizzi invece Windows PowerShell 5.1 o un ambiente Personalizzato.

### Windows PowerShell 5.1

Windows PowerShell 5.1 utilizza il runtime di Windows PowerShell installato sul server. Lo utilizzi per script e moduli che richiedono Windows PowerShell.

## Utilizzare gli ambienti in PowerShell Universal

* **API**: imposti `-ApiEnvironment` con `Set-PSUSetting` in `settings.ps1`.
* **Automazione**: imposti `-Environment` per script e pianificazioni, oppure lo selezioni all'avvio di un processo.
* **App**: imposti `-Environment` con `New-PSUApp`.
* **Sicurezza**: imposti `-SecurityEnvironment` con `Set-PSUSetting` quando l'autenticazione e l'autorizzazione devono essere eseguite al di fuori del processo del server.

## Compatibilità con Windows PowerShell

PowerShell 7 può utilizzare automaticamente il remoting locale di Windows PowerShell quando un comando o un modulo non è disponibile. Questa funzionalità di compatibilità crea un processo Windows PowerShell per ogni runspace e può aumentare notevolmente il numero di processi, l'uso della memoria, l'uso della CPU e l'overhead di serializzazione.

Disabiliti la compatibilità implicita con Windows PowerShell nella scheda **Avanzate** dell'ambiente quando non è necessaria. È disabilitata per l'ambiente Integrato e non può essere abilitata lì.

Se deve utilizzare la compatibilità, rimuova la sessione di compatibilità al termine del comando:

```powershell
Import-Module PSScheduledJob -UseWindowsPowerShell
Get-ScheduledJob | Out-Null
Get-PSSession -Name 'WinPSCompatSession' | Remove-PSSession
```

## Cmdlet PowerShell

Gestisca gli ambienti con `New-PSUEnvironment`, `Get-PSUEnvironment`, `Set-PSUEnvironment` e `Remove-PSUEnvironment`.


---

# 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/config/environments.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.
