> 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

Mit Umgebungen können Sie eine ausführbare Programmdatei, Argumente, Module und Variablen definieren, die beim Ausführen von Skripten, beim Hosten von APIs und Dashboards verwendet werden.

Umgebungen werden in der Datei `environments.ps1` gespeichert.

## Umgebungen konfigurieren

Um Umgebungen zu konfigurieren, können Sie die Seite Einstellungen \ Umgebungen verwenden.

<figure><img src="/files/Yv9ajK3PjZcBKnFAIuWw" alt=""><figcaption><p>Seite Umgebungen</p></figcaption></figure>

Umgebungen unterstützen das Festlegen von Name, Pfad, Argumenten, Modulen und Variablen.

<figure><img src="/files/vLXyvolWE9hRSacH809w" alt=""><figcaption><p>Dialog Umgebungseinstellungen</p></figcaption></figure>

### Name

Der Name der Umgebung. Dieser Name wird in der gesamten übrigen Plattform angezeigt, wenn Skripte ausgeführt, die API-Hostumgebung konfiguriert und Dashboards gehostet werden.

### Pfad und Argumente

Umgebungen unterstützen das Definieren eines Pfads zu einer ausführbaren Programmdatei und von Argumenten für diese ausführbare Programmdatei. Diese sollten entweder PowerShell.exe oder Pwsh.exe sein.

Sie können auch Module und Variablen definieren.

### Module

Die Modulliste ermöglicht es Ihnen, null oder mehr Module zu definieren, die in den PowerShell-Runspaces für die Umgebung geladen werden. Diese Module sind Teil des initialen Sitzungsstatus, sodass sie nicht manuell geladen werden müssen. Elemente, die dieser Liste hinzugefügt werden, können entweder Modulnamen oder vollständige Pfade zu Moduldateien sein.

### Variablen

Die Variablenliste ermöglicht es Ihnen, null oder mehr Variablen zu definieren, die in den PowerShell-Runspaces für die Umgebung geladen werden. Diese Liste kann aus Variablennamen aus der [Variablenkonfiguration](/powershell-universal/de/plattform/variables.md) bestehen.

Sie können auch Platzhalter (`*`) verwenden, um mehrere Variablen einzubeziehen, die einem Muster entsprechen.

### PSModulePath

Sie können den Parameter `-PSModulePath` von `New-PSUEnvironment` verwenden, um zusätzliche PSModulePaths zu konfigurieren, die in die Umgebung einbezogen werden.

### Startskripte

Startskripte werden einmal ausgeführt, wenn die Umgebung erstmals einen Runspace erstellt. Bei APIs geschieht dies immer dann, wenn ein Runspace erstellt wird, um eine HTTP-Anfrage zu bearbeiten. Dies kann häufig vorkommen, wenn der Server ausgelastet ist. Bei Apps (früher als Dashboards bekannt) geschieht dies immer dann, wenn ein Runspace erstellt wird, um einen Endpunkt zu bedienen, der ausgeführt wird, während der Benutzer eine App (Dashboard) ansieht. Bei ausgelasteten Servern und Apps mit vielen dynamischen Komponenten geschieht dies häufiger. Bei Jobs geschieht dies einmal, wenn der Job gestartet wird.

Startskripte sind relativ zum Repository-Ordner. Wenn Sie beispielsweise ein Skript mit dem Namen `startup.ps1` in Ihrem Repository-Ordner hätten, würden Sie in der Konfiguration einfach den Dateinamen angeben. Wenn Sie ein Skript in einem Verzeichnis hätten, müssten Sie dieses ebenfalls angeben.

Plattformvariablen sind in Startskripten nicht verfügbar.

## Umgebungen verwenden

Umgebungen können plattformweit verwendet werden.

### APIs

Um die zu verwendende Umgebung auszuwählen, ändern Sie die Datei `settings.ps1` und fügen Sie den Parameter `-ApiEnvironment` von `Set-PSUSetting` ein. Es muss der Name der Umgebung sein.

### Automatisierung

Jedes Skript, jeder Job und jeder Zeitplan kann eine Umgebung verwenden. Sie können Umgebungen für Skripte definieren, indem Sie die Datei `scripts.ps1` ändern und den Parameter `-Environment` von `New-PSUScript` festlegen. Um die Umgebung eines Zeitplans festzulegen, setzen Sie den Parameter `-Environment` von `New-PSUSchedule` in `schedules.ps1`. Beim Aufrufen eines Skripts können Sie ebenfalls eine zu verwendende Umgebung auswählen.

### Apps (Dashboards)

Um eine bestimmte Umgebung für eine App (Dashboard) zu verwenden, setzen Sie den Parameter `-Environment` von `New-PSUApp` in `dashboards.ps1`.

### Sicherheit

Standardmäßig erfolgen Authentifizierung und Autorisierung innerhalb des Prozesses `Universal.Server.exe`. Um diese aus 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](https://docs.powershelluniversal.com/config/security#environment).

## Integrierte Umgebung

{% hint style="warning" %}
Die integrierte Umgebung unterstützt das Ausführen mit alternativen Anmeldeinformationen nicht.
{% endhint %}

Die integrierte Umgebung verwendet den PowerShell Universal-Serverprozess direkt, anstatt externe PowerShell-Prozesse zur Bearbeitung von Anfragen zu starten.

Die integrierte Umgebung ist einfacher zu konfigurieren und zu verwenden als mehrere unterschiedliche Umgebungen. Sie werden außerdem eine Leistungsverbesserung feststellen, da keine Serialisierung und Kommunikation über Interprozesskommunikation erforderlich ist.

Der Nachteil ist, dass Sie nicht auf alternative Anmeldeinformationen erhöhen oder alternative PowerShell-Versionen verwenden können. Sie verwenden die aktuelle Version des PowerShell SDK des PowerShell Universal-Servers. Da alle PowerShell-Skripte innerhalb des Dienstes ausgeführt werden, können Sie zudem mit Ihren PowerShell-Skripten die Stabilität der Plattform beeinträchtigen.

Weitere Informationen finden Sie unter[ Best Practices](/powershell-universal/de/config/best-practices.md#favor-non-integrated-environments).

### Konfigurieren

Die integrierte Umgebung ist immer verfügbar und Sie müssen sie nicht direkt konfigurieren. Wenn Sie Module importieren oder persistente Runspaces einrichten möchten, können Sie Einstellungen für die integrierte Umgebung in `environments.ps1` festlegen.

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

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

{% endcode %}

### APIs

Um die integrierte Umgebung festzulegen, können Sie `Set-PSUSetting` in `settings.ps1` verwenden.

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

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

{% endcode %}

### Automatisierung

Sie können die integrierte Umgebung Skripten und Zeitplänen zuweisen. Sie können die integrierte Umgebung auch als Standardumgebung für die Plattform festlegen.

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

Sie können die integrierte Umgebung auch im Ausführungsdialog auswählen.

### Apps

Sie können Apps in der integrierten Umgebung ausführen. Wählen Sie die integrierte Umgebung aus der Umgebungs-Dropdown-Liste aus.

## PowerShell 7

Die PowerShell 7-Umgebung verwendet einen eingebetteten Hosting-Prozess für das PowerShell SDK, das in PowerShell Universal enthalten ist. Dies ist die empfohlene Umgebung, da sie die größte Kompatibilität mit Modulen von Drittanbietern bietet.

Die PowerShell 7-Umgebung unterstützt die Verwendung von System.Windows.Forms-Assemblys nicht. Wenn diese Assemblys für Skripte oder Module erforderlich sind, verwenden Sie eine benutzerdefinierte Umgebung, die auf pwsh.exe abzielt.

## Windows PowerShell 5.1

Die Windows PowerShell 5.1-Umgebung verwendet einen eingebetteten Hosting-Prozess für die PowerShell-Runtime, die auf dem aktuellen Computer gefunden wird. Dies ist die einzige verfügbare Umgebung zum Ausführen von Windows PowerShell-Skripten.

## Minimale Umgebungen

Minimale Umgebungen ermöglichen das Ausführen von Skripten in Befehlszeilenanwendungen, die nicht in die PowerShell Universal-Hosting-Umgebung integriert sind. PowerShell Universal erfasst `STDOUT` und `STDERR` und zeigt dies im Job-Protokoll an. Einige Anwendungsfälle für minimale Umgebungen sind:

* Python-Skripte
* PowerShell-Skripte mit problematischen Modulen

Minimale Umgebungen unterstützen Folgendes nicht:

* Feedback
* Fortschritt
* Geheimnisse
* Universal Integrated Cmdlets

Minimale Umgebungen erhalten Variablenwerte als Umgebungsvariablen. Beim Definieren einer minimalen Umgebung können Sie die Ersetzungszeichenfolge `{scriptPath}` verwenden, um die Argumente für die Umgebung so einzurichten, dass beim Ausführen des Skripts der richtige Pfad gesetzt wird.

Zum Beispiel erstellt das Folgende eine PowerShell 7-Umgebung, die die PowerShell Universal-Hosting-Bibliotheken nicht lädt.

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

Um eine Python-Umgebung zu erstellen, könnten Sie Folgendes tun.

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

## Windows PowerShell-Kompatibilität

Windows PowerShell-Kompatibilität ist eine Funktion von PowerShell 7. Wenn Befehle und Module in PowerShell 7 nicht verfügbar sind, startet die Plattform automatisch einen Windows PowerShell-Prozess im Hintergrund und führt lokales Remoting aus dem PowerShell 7-Prozess durch. Damit wird Rückwärtskompatibilität mit Windows PowerShell-Modulen erreicht.

Möglicherweise sehen Sie auf der Umgebungsseite eine Warnung, wenn diese PowerShell-Funktion aktiviert ist, aufgrund der Auswirkungen auf die PowerShell Universal-Plattform.

### Probleme mit WinPS-Kompatibilität in PowerShell Universal

Für jeden von PowerShell Universal geöffneten Runspace, in dem Windows PowerShell-Kompatibilität verwendet wird, wird ein neuer Windows PowerShell-Prozess gestartet. Diese Prozesse werden erst beendet, wenn der Runspace recycelt wird.

Dies verringert die Leistung erheblich aufgrund einer übermäßigen Anzahl laufender Prozesse sowie der Speicher- und CPU-Auslastung, die auf Serialisierung und die Verwaltung von Remote-Runspaces zurückzuführen ist.

Die häufigste Ursache hierfür ist die Verwendung des Active Directory 1.0.0.0-Moduls aus PowerShell 7.

### Implizite Windows PowerShell-Kompatibilität deaktivieren

Sie können die Windows PowerShell-Kompatibilität über die Einstellungen in den Eigenschaften der Umgebung deaktivieren.

Für die integrierte Umgebung ist die Windows PowerShell-Kompatibilität standardmäßig deaktiviert und kann nicht aktiviert werden.

### Windows PowerShell-Kompatibilität sauber verwenden

Falls erforderlich, können Sie den Windows-Kompatibilitäts-Runspace nach dem Ausführen eines Befehls mit dieser Funktion entfernen. Damit wird der Windows PowerShell-Prozess entfernt. Jedes Mal, wenn dieser Endpunkt ausgeführt wird, muss die Sitzung neu aufgebaut werden.

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

Sie können [hier mehr über die Windows PowerShell-Kompatibilität erfahren](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/de/powershell-befehle/new-psuenvironment.md)
* [Get-PSUEnvironment](/powershell-universal/de/powershell-befehle/get-psuenvironment.md)
* [Remove-PSUEnvironment](/powershell-universal/de/powershell-befehle/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/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.
