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

# Umgebungen

Konfigurieren Sie die Ausführungsumgebungen von PowerShell Universal, einschließlich isolierter PowerShell-Versionen, virtueller Umgebungen, Ausführung über Devolutions Agent und minimalem Modus.

Standardmäßig erfolgen Authentifizierung und Autorisierung innerhalb des Prozesses `Universal.Server.exe`. Um diese in einem anderen Prozess auszuführen, können Sie eine Umgebung auswählen, indem Sie den Parameter `-SecurityEnvironment` von `Set-PSUSetting` in `settings.ps1` festlegen. Weitere Informationen dazu finden Sie unter [Sicherheit](/powershell-universal/de/sicherheit/security.md#environment).

Ausführungsumgebungen definieren die PowerShell-Laufzeit, Module, Variablen und Ausführungseinstellungen, die von Skripten, APIs, Apps, Automatisierungsaufträgen und Sicherheitsprozessen verwendet werden. Verwalten Sie sie unter **Verwalten > Umgebungen > Umgebungen** oder in `environments.ps1`.

## Wählen Sie einen Umgebungstyp

| Typ                     | Verwendung                                                                                                                                                                  |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Integriert              | Wird direkt im Serverprozess von PowerShell Universal ausgeführt.                                                                                                           |
| PowerShell 7            | Verwendet den in PowerShell Universal enthaltenen PowerShell 7-Host.                                                                                                        |
| PowerShell 7 (Isoliert) | Verwendet [multi-pwsh](https://github.com/Devolutions/multi-pwsh), um eine ausgewählte PowerShell 7-Version auszuführen, optional in einer verwalteten virtuellen Umgebung. |
| Windows PowerShell 5.1  | Verwendet die auf dem Server installierte Windows PowerShell-Laufzeit.                                                                                                      |
| Benutzerdefiniert       | Startet die von Ihnen angegebene ausführbare Programmdatei und Argumente.                                                                                                   |
| Container               | Wird im konfigurierten Container-Image des Devolutions Agent ausgeführt.                                                                                                    |

Alle Umgebungen können Module, PowerShell-Variablen, `PSModulePath`-Einträge, Startskripte und erweiterte Runspace-Einstellungen definieren. Wählen Sie eine Umgebung anhand ihres Namens aus, wenn Sie ein Skript, einen Zeitplan, eine API, eine App, ein Terminal oder eine Sicherheitsumgebung konfigurieren.

## Ressourcen konfigurieren

Verwenden Sie beim Bearbeiten einer Umgebung die Registerkarte **Ressourcen**, um diese Einstellungen zu konfigurieren:

* **Module**: Modulnamen oder Pfade zu Moduldateien, die PowerShell Universal importiert, wenn es Runspaces erstellt.
* **Variablen**: Namen von PowerShell Universal-Variablen, die verfügbar gemacht werden sollen. Verwenden Sie `*`, um alle übereinstimmenden Variablen einzuschließen.
* **PSModulePath**: Zusätzliche Modulsuchpfade für die Umgebung.
* **Startskripte**: Repository-relative Skripte, die ausgeführt werden, wenn ein neuer Runspace erstellt wird.

Startskripte werden einmal für jeden neuen Runspace ausgeführt. Sie werden einmal beim Start eines Auftrags ausgeführt, können bei APIs und Apps jedoch häufiger ausgeführt werden, wenn deren Runspaces erstellt werden. Plattformvariablen sind in Startskripten nicht verfügbar.

## Isolierte PowerShell 7-Umgebungen

Eine isolierte Umgebung verwendet multi-pwsh anstelle des in PowerShell Universal enthaltenen PowerShell-Hosts. Wählen Sie diesen Typ, wenn ein Skript eine bestimmte PowerShell 7-Version oder eine stärkere Prozessisolierung vom PowerShell SDK des Servers und den geladenen Assemblys benötigt.

Jede isolierte Umgebung muss eine **PowerShell-Version** haben. PowerShell Universal lehnt eine isolierte Umgebung ab, die keine angibt.

### PowerShell-Versionen installieren und auswählen

1. Gehen Sie zu **Verwalten > Umgebungen > PowerShell-Versionen**.
2. Geben Sie einen multi-pwsh-Selektor wie `stable`, `preview`, `lts` oder `7.4` ein und wählen Sie dann **Installieren**.
3. Aktualisieren Sie die Versionsliste. Sie zeigt jede Version, ihren Pfad, ihren Bereich und ob sie für isolierte Umgebungen verfügbar ist.
4. Erstellen oder bearbeiten Sie eine Umgebung, wählen Sie **PowerShell 7 (Isoliert)** und wählen Sie eine installierte isolierte Version aus.

Nur als **Isoliert** markierte Versionen können für isolierte Umgebungen ausgewählt werden. Sie können über multi-pwsh installierte Versionen auf derselben Registerkarte entfernen, wenn sie nicht mehr benötigt werden.

Erstellen Sie eine isolierte Umgebung in der Konfiguration mit einer konkreten Version oder einem multi-pwsh-Selektor:

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

## Verwaltete virtuelle Umgebungen

Aktivieren Sie **Virtuell** für eine isolierte Umgebung, um sie in einer verwalteten virtuellen multi-pwsh-Umgebung auszuführen. PowerShell Universal erstellt die virtuelle Umgebung, bevor sie verwendet wird, und wählt sie jedes Mal aus, wenn die Umgebung einen Auftrag startet.

Die Identität der verwalteten virtuellen Umgebung wird aus dem Namen der Umgebung, der PowerShell-Version, den Modulen, `PSModulePath` und den Startskript-Einstellungen abgeleitet. Das Ändern dieser Einstellungen erzeugt eine neue verwaltete Identität. PowerShell Universal räumt verwaltete virtuelle Umgebungen auf, die von keiner Umgebung mehr referenziert werden.

Verwenden Sie eine virtuelle Umgebung, wenn der multi-pwsh-Laufzeitzustand von anderen Umgebungen isoliert bleiben soll. Container-Umgebungen verwenden ebenfalls eine verwaltete virtuelle Umgebung, wenn **Virtuell** aktiviert ist oder wenn für die Umgebung Module konfiguriert sind.

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

### Unterstützung für Devolutions Agent

Wenn ein Auftrag auf einen verbundenen Devolutions Agent ausgerichtet ist, verwendet PowerShell Universal den PowerShell-Versionsselektor der Umgebung mit der ausführbaren multi-pwsh-Programmdatei des Agents. Bei einer isolierten oder Container-Umgebung, die eine verwaltete virtuelle Umgebung verwendet, exportiert der Server diese virtuelle Umgebung, und der Agent importiert sie, bevor der Auftrag beginnt.

Diese Übertragung erfolgt automatisch und verwendet eine kurzlebige, authentifizierte Download-URL. Der Agent verwendet eine bereits importierte, übereinstimmende virtuelle Umgebung erneut. Konfigurieren Sie dieselbe Umgebung normal und wählen Sie dann in den Ausführungs- oder Zeitplanoptionen den Devolutions Agent oder die Computergruppe aus.

## Minimale PowerShell 7-Umgebungen

Aktivieren Sie **Minimal** für eine PowerShell 7-Umgebung, um Aufträge über lokales PowerShell-Remoting in einem dedizierten PowerShell-Unterprozess auszuführen. Dieser Modus vermeidet das Laden der normalen PowerShell Universal-Hosting-Assemblys in den Skriptprozess, was für Skripte und Module nützlich ist, die Assembly-Bindungskonflikte mit dem Server haben.

Der minimale Modus ist für PowerShell 7-, Windows PowerShell 5.1- und benutzerdefinierte Umgebungen verfügbar. PowerShell Universal behält die formatierte Ausgabe und die Pipeline-Ausgabe des Auftrags aus minimalen PowerShell 7-Ausführungen bei, sodass die Ausgabe im Auftragsprotokoll und im Auftragsverlauf verfügbar bleibt.

Minimale Umgebungen haben weiterhin wichtige Einschränkungen:

* Sie unterstützen kein Feedback, keine Fortschrittsberichte, keine Geheimnisse und keine in Universal integrierten Cmdlets.
* Konfigurierte Variablenwerte, die keine Geheimnisse sind, werden als Prozessumgebungsvariablen bereitgestellt.
* Verwenden Sie die normale PowerShell 7-Umgebung, wenn das Skript die vollständige Integration in den PowerShell Universal-Host benötigt.

Um es in der Admin-Konsole zu aktivieren, bearbeiten Sie eine PowerShell 7-Umgebung und wählen Sie **Minimal**. In der Konfiguration:

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

Eine benutzerdefinierte minimale Umgebung kann eine andere Befehlszeilen-Programmdatei ausführen. Verwenden Sie `{scriptPath}` in ihren Argumenten, wenn die ausführbare Programmdatei den aufgelösten Skriptpfad erhalten muss.

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

## Standardumgebungen

### Integriert

Die integrierte Umgebung führt Skripte direkt im Serverprozess von PowerShell Universal aus. Sie vermeidet die Serialisierung zwischen Prozessen und ist einfach zu konfigurieren, kann jedoch nicht mit alternativen Anmeldeinformationen oder einer anderen PowerShell-Version ausgeführt werden. Da Skripte den Serverprozess gemeinsam nutzen, können problematische Skripte die Plattformstabilität beeinträchtigen.

Die integrierte Umgebung ist immer verfügbar. Sie können dafür in `environments.ps1` dennoch Module oder persistente Runspaces konfigurieren:

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

### PowerShell 7

Die Standardumgebung PowerShell 7 verwendet den in PowerShell Universal enthaltenen PowerShell-Host. Sie ist der empfohlene Standard für eine breite Kompatibilität mit Modulen von Drittanbietern. Wenn ein Skript Windows Forms oder eine andere Abhängigkeit benötigt, die nur unter Windows PowerShell verfügbar ist, verwenden Sie stattdessen Windows PowerShell 5.1 oder eine benutzerdefinierte Umgebung.

### Windows PowerShell 5.1

Windows PowerShell 5.1 verwendet die auf dem Server installierte Windows PowerShell-Laufzeit. Verwenden Sie es für Skripte und Module, die Windows PowerShell erfordern.

## Umgebungen in PowerShell Universal verwenden

* **APIs**: Legen Sie `-ApiEnvironment` mit `Set-PSUSetting` in `settings.ps1` fest.
* **Automatisierung**: Legen Sie `-Environment` für Skripte und Zeitpläne fest oder wählen Sie es beim Starten eines Auftrags aus.
* **Apps**: Legen Sie `-Environment` mit `New-PSUApp` fest.
* **Sicherheit**: Legen Sie `-SecurityEnvironment` mit `Set-PSUSetting` fest, wenn Authentifizierung und Autorisierung außerhalb des Serverprozesses ausgeführt werden sollen.

## Windows PowerShell-Kompatibilität

PowerShell 7 kann automatisch lokales Windows PowerShell-Remoting verwenden, wenn ein Befehl oder Modul nicht verfügbar ist. Diese Kompatibilitätsfunktion erstellt einen Windows PowerShell-Prozess pro Runspace und kann die Prozessanzahl, den Speicherverbrauch, die CPU-Auslastung und den Serialisierungsaufwand erheblich erhöhen.

Deaktivieren Sie die implizite Windows PowerShell-Kompatibilität auf der Registerkarte **Erweitert** der Umgebung, wenn sie nicht erforderlich ist. Für die integrierte Umgebung ist sie deaktiviert und kann dort nicht aktiviert werden.

Wenn Sie die Kompatibilität verwenden müssen, entfernen Sie die Kompatibilitätssitzung nach Abschluss des Befehls:

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

## PowerShell-Cmdlets

Verwalten Sie Umgebungen mit `New-PSUEnvironment`, `Get-PSUEnvironment`, `Set-PSUEnvironment` und `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/de/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.
