> 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/automatisierung/scripts/parameters.md).

# Parameter

## Parameter

Jobs unterstützen das automatische Generieren von Formularen mit Parametern basierend auf dem `param`-Block Ihres Skripts. Die Art des Steuerelements ändert sich je nach dem Typ, den Sie im Block definieren. Parameter, die zwingend erforderlich sind, werden auch von der Benutzeroberfläche als erforderlich behandelt.

### Grundlegende Parameter

Parameter können einfach ohne ein Parameterattribut definiert werden und werden dann in der Benutzeroberfläche als Textfelder angezeigt.

```powershell
param($Test)

$Test
```

### Parametertypen

Universal unterstützt verschiedene Arten von Parametern. Sie können die Typen String, String\[], Int, DateTime, Boolean, Switch und Enum verwenden.

#### String

Sie können String-Parameter definieren, indem Sie den Typ `[String]` angeben oder überhaupt keinen Typ angeben. Strings erzeugen ein Textfeld.

```powershell
param(
    [String]$Textbox,
    $Textbox2
)
```

![](/files/kFNL2cZra3VZrF3vQa9I)

#### String-Arrays

Sie können String-Arrays angeben, indem Sie den Typspezifizierer `[String[]]` verwenden. String-Arrays erzeugen ein Mehrfachauswahlfeld mit Tags.

```powershell
param([String[]]$Array)
```

![](/files/KY7eZlO3lM3cL049hKxj)

#### Datum und Uhrzeit

Sie können den Typspezifizierer `[DateTime]` verwenden, um eine Datums- und Uhrzeitauswahl zu erstellen.

```powershell
param([DateTime]$DateTime)
```

![](/files/Be0JT39nyR24BNqEwgx0)

#### Boolean

Sie können einen `[Bool]`-Typspezifizierer verwenden, um einen Schalter zu erstellen.

```powershell
param([Bool]$Switch)
```

![](/files/ePTsXOeO5LLPq0kgieWL)

#### Integer

Sie können eine Zahlenauswahl definieren, indem Sie den Typspezifizierer `[Int]` verwenden.

```powershell
param([Int]$Number)
```

![](/files/wSHB8WbJKIOcHXODceLc)

#### Switch-Parameter

Sie können einen Switch-Parameter mit dem Typspezifizierer `[Switch]` definieren, um einen Schalter zu erstellen.

```powershell
param([Switch]$Switch)
```

![](/files/Kk0Ik7aSIn8CITLILNbW)

#### Aufzählungen

Sie können System.Enum-Werte verwenden, um Auswahlfelder zu erstellen. Zum Beispiel könnten Sie `System.DayOrWeek` verwenden, um ein Auswahlfeld für den Wochentag zu erstellen.

```powershell
param([System.DayOfWeek]$DayOfWeek)
```

![](/files/nNTan8vhZBCQgavmZBZt)

#### PSCredential

Wenn Sie ein `PSCredential` angeben, wird dem Benutzer eine Auswahlliste der als [Variablen](/powershell-universal/de/plattform/variables.md#creating-a-secret-variable) verfügbaren Anmeldeinformationen angezeigt.

```powershell
param(
    [PSCredential]$Credential
)
```

![](/files/29stf62u9NJoSaOp2hYZ)

#### Datei

Sie können Benutzern erlauben, Dateien hochzuladen, indem Sie den Typ `[File]` verwenden.

```powershell
param(
    [File]$File
)
```

Dateien stehen in Ihren Skripten als `PSUFile`-Objekt zur Verfügung. Dieses Objekt besitzt ein `byte[]`-Array, das Sie zur Verarbeitung der Datei verwenden können.

Zum Beispiel können Sie den String-Inhalt der Datei abrufen, indem Sie sie mithilfe der Encoding-Klassen konvertieren.

```powershell
[Text.Encoding]::UTF8.GetString($File.Content)
```

### Anzeigename

Sie können das `DisplayNameAtrribute` verwenden, um einen Anzeigenamen für den Skriptparameter festzulegen.

```powershell
param(
    [ComponentModel.DisplayName("My Script")]
    $MyScript
)
```

![](/files/QoNwa0YTDSQ8z5pKaTWg)

### Hilfemeldungen

Sie können Hilfemeldungen für Ihre Parameter definieren, indem Sie die Eigenschaft `HelpMessage` des `Parameter`-Attributs verwenden.

```powershell
param(
    [Parameter(HelpMessage = "Class you want to enroll in")]
    [string]$Class
)
```

![](/files/kZx1eZBeDpK61FbqCidX)

### Erforderliche Parameter

Sie können das Parameter-Attribut verwenden, um erforderliche Parameter zu definieren.

```powershell
param(
    [Parameter(Mandatory)]
    $RequiredParameter
)

$RequiredParameter
```

![](/files/sHor3p3VvQUXBZNvrjZ8)

### Standardwert

Sie können sowohl statische als auch Standardwerte für Parameter verwenden. Der Standardwert wird berechnet, wenn der Job ausgeführt werden soll.

```powershell
param(
    $Parameter = "Hello, World",
    [DateTime]$ExecutionTime = Get-Date
)

$Parameter
$ExecutionTime
```

## ValidateSet

Das `ValidateSet`-Attribut wird verwendet, um zu erzwingen, welche Werte an einen Parameter übergeben werden können. Erfahren Sie mehr über [ValidateSet hier.](https://duckduckgo.com/?q=validateset\&ia=web) PowerShell Universal erstellt automatisch ein Dropdown-Menü mit den Werten, die dem `ValidateSet`-Attribut für Parameter übergeben wurden.

Zum Beispiel könnte ein Skript einen param-Block wie folgt definieren.

```powershell
param(
    [ValidateSet("Steve", "Mary")]
    [string]$Name
)
```

Das Ergebnis wird unten gezeigt.

<figure><img src="/files/MJ5gscIIUbbArfl8kEev" alt=""><figcaption><p>ValidateSet-Attribut</p></figcaption></figure>

## Parameter aus PowerShell übergeben

Sie können Parameter aus PowerShell mit dem Cmdlet `Invoke-PSUScript` übergeben. Dieses Cmdlet unterstützt dynamische Parameter. Wenn Ihr Skript einen `param`-Block enthält, werden diese Parameter automatisch zu `Invoke-PSUScript` hinzugefügt.

Zum Beispiel hatte ich ein Skript namens Script1.ps1 mit folgendem Inhalt.

```powershell
param($MyParameter)

$MyParameter
```

Ich könnte dieses Skript dann mit dieser Syntax aufrufen.

```powershell
Invoke-PSUScript -Name 'Script.ps1' -MyParameter "Hello"
```

Das Ergebnis wäre, dass Hello im Job-Protokoll und in der Pipeline ausgegeben wird.

## Parametersätze

PowerShell Universal unterstützt Parametersätze. Wenn ein Parametersatz definiert ist, wird eine Auswahlliste bereitgestellt, mit der zwischen den Sätzen gewechselt werden kann.

```powershell
param(
    [Parameter(ParameterSetName = 'Set1')]
    $Parameter1,
    [Parameter(ParameterSetName = 'Set2')]
    $Parameter2
)
```

![Parametersätze](/files/O40B2ySqom0fHpV0BbCO)


---

# 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/automatisierung/scripts/parameters.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.
