> 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

Los entornos le permiten definir un ejecutable, argumentos, módulos y variables para usar al ejecutar scripts, alojar APIs y paneles.

Los entornos se almacenan en el fichero `environments.ps1`.

## Configuración de entornos

Para configurar los entornos, puede usar la página Configuración \ Entornos.

<figure><img src="/files/edPiaIyuigC8eu2nrEIq" alt=""><figcaption><p>Página de entornos</p></figcaption></figure>

Los entornos admiten la definición del nombre, la ruta, los argumentos, los módulos y las variables.

<figure><img src="/files/9G69d70dDZditejwdH0q" alt=""><figcaption><p>Cuadro de diálogo de configuración del entorno</p></figcaption></figure>

### Nombre

El nombre del entorno. Este nombre se mostrará en el resto de la plataforma al ejecutar scripts, configurar el entorno de host de la API y alojar paneles.

### Ruta y argumentos

Los entornos admiten la definición de una ruta a un ejecutable y de argumentos para dicho ejecutable. Estos deben ser PowerShell.exe o Pwsh.exe.

También puede definir módulos y variables.

### Módulos

La lista de módulos le permite definir cero o más módulos para cargar en los runspaces de PowerShell del entorno. Estos módulos formarán parte del estado inicial de la sesión, por lo que no será necesario cargarlos manualmente. Los elementos añadidos a esta lista pueden ser nombres de módulos o rutas completas a ficheros de módulos.

### Variables

La lista de variables le permite definir cero o más variables para cargar en los runspaces de PowerShell del entorno. Esta lista puede estar compuesta por nombres de variables de la [configuración de variables](/powershell-universal/es/plataforma/variables.md).

También puede usar comodines (`*`) para incorporar varias variables que coincidan con un patrón.

### PSModulePath

Puede usar el parámetro `-PSModulePath` de `New-PSUEnvironment` para configurar PSModulePaths adicionales que se incluirán en el entorno.

### Scripts de inicio

Los scripts de inicio se ejecutan una vez cuando el entorno crea un runspace por primera vez. En el caso de las APIs, esto ocurre cada vez que se crea un runspace para atender una solicitud HTTP. Esto puede ocurrir con frecuencia si el servidor está ocupado. En el caso de las aplicaciones (antes conocidas como paneles), esto ocurrirá cada vez que se cree un runspace para atender la ejecución de un endpoint mientras el usuario visualiza una aplicación (panel). Los servidores ocupados y las aplicaciones con muchos componentes dinámicos harán esto con mayor frecuencia. En el caso de los trabajos, esto ocurrirá una vez cuando se inicie el trabajo.

Los scripts de inicio son relativos a la carpeta Repository. Por ejemplo, si tuviera un script en su carpeta de repositorio llamado `startup.ps1`, solo tendría que indicar el nombre del fichero en la configuración. Si tuviera un script en un directorio, también tendría que incluirlo.

Las variables de la plataforma no están disponibles en los scripts de inicio.

## Uso de entornos

Los entornos se pueden usar en toda la plataforma.

### APIs

Para seleccionar el entorno que se va a usar, modifique el fichero `settings.ps1` e incluya el parámetro `-ApiEnvironment` de `Set-PSUSetting`. Debe ser el nombre del entorno.

### Automatización

Cada script, trabajo y programación puede usar un entorno. Puede definir entornos para los scripts modificando `scripts.ps1` y estableciendo el parámetro `-Environment` de `New-PSUScript`. Para establecer el entorno de una programación, establezca el parámetro `-Environment` de `New-PSUSchedule` en `schedules.ps1`. Al invocar un script, también puede elegir el entorno que se va a usar.

### Aplicaciones (paneles)

Para usar un entorno concreto en una aplicación (panel), establezca el parámetro `-Environment` de `New-PSUApp` en `dashboards.ps1`.

### Seguridad

De forma predeterminada, la autenticación y la autorización se realizan dentro del proceso `Universal.Server.exe`. Para ejecutarlas desde un proceso diferente, puede seleccionar un entorno estableciendo el parámetro `-SecurityEnvironment` de `Set-PSUSetting` en `settings.ps1`. Consulte [Seguridad](https://docs.powershelluniversal.com/config/security#environment) para obtener más información al respecto.

## Entorno integrado

{% hint style="warning" %}
El entorno integrado no admite la ejecución con credenciales alternativas.
{% endhint %}

El entorno integrado usa el proceso del servidor de PowerShell Universal directamente en lugar de iniciar procesos externos de PowerShell para atender las solicitudes.

El entorno integrado es más fácil de configurar y usar que tener múltiples entornos dispares. También notará una mejora en el rendimiento, ya que no es necesario serializar ni comunicarse mediante comunicación entre procesos.

El inconveniente es que no puede elevar a credenciales alternativas ni usar versiones alternativas de PowerShell. Usará la versión actual del SDK de PowerShell del servidor de PowerShell Universal. Además, dado que todos los scripts de PowerShell se ejecutan dentro del servicio, sus scripts de PowerShell pueden afectar a la estabilidad de la plataforma.

Consulte[ Prácticas recomendadas ](/powershell-universal/es/config/best-practices.md#favor-non-integrated-environments)para obtener más información.

### Configuración

El entorno integrado siempre está disponible y no es necesario configurarlo directamente. Si desea importar módulos o configurar runspaces persistentes, puede establecer la configuración del entorno integrado en `environments.ps1`.

{% code title=".universal\environments.ps1" %}

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

{% endcode %}

### APIs

Para establecer el entorno integrado, puede usar `Set-PSUSetting` en `settings.ps1`.

{% code title=".universal\settings.ps1" %}

```powershell
Set-PSUSetting -ApiEnvironment 'Integrated'
```

{% endcode %}

### Automatización

Puede asignar el entorno integrado a scripts y programaciones. También puede establecer el entorno integrado como el entorno predeterminado de la plataforma.

```powershell
Set-PSetting -DefaultEnvironment 'Integrated'
```

También puede elegir el entorno integrado desde el cuadro de diálogo de ejecución.

### Aplicaciones

Puede ejecutar aplicaciones en el entorno integrado. Seleccione el entorno integrado en la lista desplegable de entornos.

## PowerShell 7

El entorno de PowerShell 7 usa un proceso de alojamiento incrustado para el SDK de PowerShell que se incluye con PowerShell Universal. Este es el entorno recomendado, ya que ofrece la mayor compatibilidad con módulos de terceros.

El entorno de PowerShell 7 no admite el uso de ensamblados System.Windows.Forms. Estos ensamblados son necesarios para scripts o módulos, use un entorno personalizado dirigido a pwsh.exe.

## Windows PowerShell 5.1

El entorno de Windows PowerShell 5.1 usa un proceso de alojamiento incrustado para el runtime de PowerShell que se encuentra en el equipo actual. Este es el único entorno disponible para ejecutar scripts de Windows PowerShell.

## Entornos mínimos

Los entornos mínimos permiten ejecutar scripts en aplicaciones de línea de comandos que no se integran con el entorno de alojamiento de PowerShell Universal. PowerShell Universal captura `STDOUT` y `STDERR` y lo muestra en el registro del trabajo. Algunos casos de uso de los entornos mínimos son:

* Scripts de Python
* Scripts de PowerShell con módulos problemáticos

Los entornos mínimos no admiten lo siguiente:

* Feedback
* Progreso
* Secretos
* Cmdlets integrados de Universal

Los entornos mínimos recibirán los valores de las variables como variables de entorno. Al definir un entorno mínimo, puede usar la cadena de reemplazo `{scriptPath}` para configurar los argumentos del entorno y establecer la ruta correcta al ejecutar el script.

Por ejemplo, lo siguiente crea un entorno de PowerShell 7 que no carga las bibliotecas de alojamiento de PowerShell Universal.

```powershell
New-PSUEnvironment -Name 'Minimal' -Path 'pwsh' -Arguments "-File {scriptPath}" -Variables @('*') -Minimal
```

Para crear un entorno de Python, podría hacer lo siguiente.

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

## Compatibilidad con Windows PowerShell

La compatibilidad con Windows PowerShell es una función de PowerShell 7. Cuando los comandos y módulos no están disponibles en PowerShell 7, la plataforma iniciará automáticamente un proceso de Windows PowerShell en segundo plano y realizará comunicación remota local desde el proceso de PowerShell 7. Esto logra la compatibilidad con versiones anteriores de los módulos de Windows PowerShell.

Puede que vea una advertencia en la página de entornos cuando esta función de PowerShell esté habilitada, debido a sus implicaciones en la plataforma PowerShell Universal.

### Problemas con la compatibilidad de WinPS en PowerShell Universal

Por cada runspace abierto por PowerShell Universal en el que se use la compatibilidad con Windows PowerShell, se iniciará un nuevo proceso de Windows PowerShell. Estos procesos solo se detendrán cuando el runspace se recicle.

Esto reduce considerablemente el rendimiento debido al número excesivo de procesos en ejecución y al uso de memoria y CPU atribuido a la serialización y a la gestión de runspaces remotos.

La causa más habitual de esto es el uso del módulo Active Directory 1.0.0.0 desde PowerShell 7.

### Deshabilitar la compatibilidad implícita con Windows PowerShell

Puede deshabilitar la compatibilidad con Windows PowerShell mediante la configuración incluida en las propiedades del entorno.

La compatibilidad con Windows PowerShell está deshabilitada de forma predeterminada en el entorno integrado y no se puede habilitar.

### Uso limpio de la compatibilidad con Windows PowerShell

Si es necesario, puede eliminar el runspace de compatibilidad con Windows después de ejecutar un comando usando esta función. Esto eliminará el proceso de Windows PowerShell. Cada vez que se ejecute este endpoint, será necesario restablecer la sesión.

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

Puede obtener más información sobre [la compatibilidad con Windows PowerShell aquí](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_windows_powershell_compatibility?view=powershell-7.2).

## API

* [New-PSUEnvironment](/powershell-universal/es/comandos-de-powershell/new-psuenvironment.md)
* [Get-PSUEnvironment](/powershell-universal/es/comandos-de-powershell/get-psuenvironment.md)
* [Remove-PSUEnvironment](/powershell-universal/es/comandos-de-powershell/remove-psuenvironment.md)


---

# 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.
