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

# Entornos

Configure los entornos de ejecución de PowerShell Universal, incluidas las versiones aisladas de PowerShell, los entornos virtuales, la ejecución con Devolutions Agent y el modo mínimo.

De forma predeterminada, la autenticación y la autorización se producen dentro del proceso `Universal.Server.exe`. Para ejecutarlas desde un proceso distinto, puede seleccionar un entorno estableciendo el parámetro `-SecurityEnvironment` de `Set-PSUSetting` en `settings.ps1`. Consulte [Seguridad](/powershell-universal/es/seguridad/security.md#environment) para obtener más información al respecto.

Los entornos de ejecución definen el runtime de PowerShell, los módulos, las variables y la configuración de ejecución que utilizan los scripts, las API, las aplicaciones, los trabajos de automatización y los procesos de seguridad. Gestiónelos en **Manage > Environments > Environments** o en `environments.ps1`.

## Elegir un tipo de entorno

| Tipo                   | Uso                                                                                                                                                                     |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Integrado              | Se ejecuta directamente en el proceso del servidor de PowerShell Universal.                                                                                             |
| PowerShell 7           | Utiliza el host de PowerShell 7 incluido con PowerShell Universal.                                                                                                      |
| PowerShell 7 (aislado) | Utiliza [multi-pwsh](https://github.com/Devolutions/multi-pwsh) para ejecutar una versión de PowerShell 7 seleccionada, opcionalmente en un entorno virtual gestionado. |
| Windows PowerShell 5.1 | Utiliza el runtime de Windows PowerShell instalado en el servidor.                                                                                                      |
| Personalizado          | Inicia el ejecutable y los argumentos que especifique.                                                                                                                  |
| Contenedor             | Se ejecuta en la imagen de contenedor configurada de Devolutions Agent.                                                                                                 |

Todos los entornos pueden definir módulos, variables de PowerShell, entradas de `PSModulePath`, scripts de inicio y configuración avanzada de runspaces. Seleccione un entorno por su nombre al configurar un script, una programación, una API, una aplicación, un terminal o un entorno de seguridad.

## Configurar recursos

Utilice la pestaña **Resources** al editar un entorno para configurar estos ajustes:

* **Modules**: nombres de módulos o rutas de ficheros de módulo que PowerShell Universal importa cuando crea runspaces.
* **Variables**: nombres de las variables de PowerShell Universal que se pondrán a disposición. Utilice `*` para incluir todas las variables coincidentes.
* **PSModulePath**: rutas adicionales de búsqueda de módulos para el entorno.
* **Startup scripts**: scripts relativos al repositorio que se ejecutan cuando se crea un nuevo runspace.

Los scripts de inicio se ejecutan una vez por cada nuevo runspace. Se ejecutan una vez cuando se inicia un trabajo, pero pueden ejecutarse con más frecuencia en las API y las aplicaciones a medida que se crean sus runspaces. Las variables de plataforma no están disponibles en los scripts de inicio.

## Entornos aislados de PowerShell 7

Un entorno aislado utiliza multi-pwsh en lugar del host de PowerShell incluido con PowerShell Universal. Elija este tipo cuando un script necesite una versión específica de PowerShell 7 o un mayor aislamiento de procesos respecto al SDK de PowerShell del servidor y los ensamblados cargados.

Todo entorno aislado debe tener una **PowerShell version**. PowerShell Universal rechaza un entorno aislado que no especifique ninguna.

### Instalar y seleccionar versiones de PowerShell

1. Vaya a **Manage > Environments > PowerShell Versions**.
2. Introduzca un selector de multi-pwsh como `stable`, `preview`, `lts` o `7.4` y, a continuación, seleccione **Install**.
3. Actualice la lista de versiones. Muestra cada versión, su ruta, su ámbito y si está disponible para entornos aislados.
4. Cree o edite un entorno, seleccione **PowerShell 7 (Isolated)** y elija una versión aislada instalada.

Solo pueden seleccionarse para entornos aislados las versiones marcadas como **Isolated**. Puede eliminar desde la misma pestaña las versiones instaladas con multi-pwsh cuando ya no las necesite.

Cree un entorno aislado en la configuración con una versión concreta o con un selector de multi-pwsh:

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

## Entornos virtuales gestionados

Active **Virtual** en un entorno aislado para ejecutarlo en un entorno virtual gestionado de multi-pwsh. PowerShell Universal crea el entorno virtual antes de utilizarlo y lo selecciona cada vez que el entorno inicia un trabajo.

La identidad del entorno virtual gestionado se deriva del nombre del entorno, la versión de PowerShell, los módulos, `PSModulePath` y la configuración de los scripts de inicio. Al cambiar esos ajustes se crea una nueva identidad gestionada. PowerShell Universal limpia los entornos virtuales gestionados a los que ya no hace referencia ningún entorno.

Utilice un entorno virtual cuando desee que el estado del runtime de multi-pwsh permanezca aislado de otros entornos. Los entornos de contenedor también utilizan un entorno virtual gestionado cuando **Virtual** está activado o cuando el entorno tiene módulos configurados.

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

### Compatibilidad con Devolutions Agent

Cuando un trabajo se dirige a un Devolutions Agent conectado, PowerShell Universal utiliza el selector de versión de PowerShell del entorno con el ejecutable multi-pwsh del agente. En el caso de un entorno aislado o de contenedor que utilice un entorno virtual gestionado, el servidor exporta ese entorno virtual y el agente lo importa antes de que se inicie el trabajo.

Esta transferencia es automática y utiliza una URL de descarga autenticada y de corta duración. El agente reutiliza un entorno virtual coincidente ya importado. Configure el mismo entorno de la forma habitual y, a continuación, elija el Devolutions Agent o el grupo de equipos en las opciones de ejecución o de programación.

## Entornos mínimos de PowerShell 7

Active **Minimal** en un entorno de PowerShell 7 para ejecutar los trabajos en un subproceso de PowerShell dedicado mediante comunicación remota local de PowerShell. Este modo evita cargar los ensamblados de hospedaje normales de PowerShell Universal en el proceso del script, lo que resulta útil para scripts y módulos que tienen conflictos de enlace de ensamblados con el servidor.

El modo mínimo está disponible para los entornos PowerShell 7, Windows PowerShell 5.1 y Personalizado. PowerShell Universal conserva la salida formateada del trabajo y la salida de la canalización de las ejecuciones mínimas de PowerShell 7, por lo que la salida sigue estando disponible en el registro del trabajo y en el historial de trabajos.

Los entornos mínimos siguen teniendo limitaciones importantes:

* No admiten comentarios, informes de progreso, secretos ni cmdlets integrados de Universal.
* Los valores de variables no secretas configurados se proporcionan como variables de entorno del proceso.
* Utilice el entorno normal de PowerShell 7 cuando el script necesite la integración completa con el host de PowerShell Universal.

Para activarlo en la consola de administración, edite un entorno de PowerShell 7 y seleccione **Minimal**. En la configuración:

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

Un entorno mínimo personalizado puede ejecutar otro ejecutable de línea de comandos. Utilice `{scriptPath}` en sus argumentos cuando el ejecutable deba recibir la ruta del script resuelta.

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

## Entornos estándar

### Integrado

El entorno Integrado ejecuta los scripts directamente en el proceso del servidor de PowerShell Universal. Evita la serialización entre procesos y es sencillo de configurar, pero no puede ejecutarse con credenciales alternativas ni utilizar otra versión de PowerShell. Dado que los scripts comparten el proceso del servidor, los scripts problemáticos pueden afectar a la estabilidad de la plataforma.

El entorno Integrado siempre está disponible. Aun así, puede configurar módulos o runspaces persistentes para él en `environments.ps1`:

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

### PowerShell 7

El entorno estándar de PowerShell 7 utiliza el host de PowerShell incluido con PowerShell Universal. Es el valor predeterminado recomendado por su amplia compatibilidad con módulos de terceros. Si un script requiere Windows Forms u otra dependencia exclusiva de Windows PowerShell, utilice en su lugar Windows PowerShell 5.1 o un entorno Personalizado.

### Windows PowerShell 5.1

Windows PowerShell 5.1 utiliza el runtime de Windows PowerShell instalado en el servidor. Utilícelo para scripts y módulos que requieran Windows PowerShell.

## Utilizar entornos en PowerShell Universal

* **API**: establezca `-ApiEnvironment` con `Set-PSUSetting` en `settings.ps1`.
* **Automatización**: establezca `-Environment` para los scripts y las programaciones, o selecciónelo al iniciar un trabajo.
* **Aplicaciones**: establezca `-Environment` con `New-PSUApp`.
* **Seguridad**: establezca `-SecurityEnvironment` con `Set-PSUSetting` cuando la autenticación y la autorización deban ejecutarse fuera del proceso del servidor.

## Compatibilidad con Windows PowerShell

PowerShell 7 puede utilizar automáticamente la comunicación remota local de Windows PowerShell cuando un comando o módulo no está disponible. Esta función de compatibilidad crea un proceso de Windows PowerShell por cada runspace y puede aumentar considerablemente el número de procesos, el uso de memoria, el uso de CPU y la sobrecarga de serialización.

Desactive la compatibilidad implícita con Windows PowerShell en la pestaña **Advanced** del entorno cuando no sea necesaria. Está desactivada para el entorno Integrado y no puede activarse ahí.

Si debe utilizar la compatibilidad, elimine la sesión de compatibilidad una vez que el comando haya finalizado:

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

## Cmdlets de PowerShell

Gestione los entornos con `New-PSUEnvironment`, `Get-PSUEnvironment`, `Set-PSUEnvironment` y `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/es/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.
