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

# Parametri

Genera automaticamente i moduli di input dei job di PowerShell Universal a partire dai blocchi param degli script, con supporto per tipi come DateTime, PSCredential, File e ValidateSet.

## Parametri

I job supportano la generazione automatica di moduli con parametri basati sul blocco `param` del suo script. Il tipo di controllo cambia in base al tipo definito nel blocco. Anche i parametri obbligatori saranno richiesti dall'interfaccia utente.

### Parametri di base

I parametri possono essere definiti semplicemente senza alcun tipo di attributo di parametro e verranno visualizzati come caselle di testo nell'interfaccia utente.

```powershell
param($Test)

$Test
```

### Tipi di parametri

Universal supporta vari tipi di parametri. È possibile utilizzare i tipi String, String\[], Int, DateTime, Boolean, Switch ed Enum.

#### String

È possibile definire parametri stringa specificando il tipo `[String]` oppure non specificando alcun tipo. Le stringhe generano una casella di testo.

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

#### Array di stringhe

È possibile specificare array di stringhe utilizzando l'identificatore di tipo `[String[]]`. Gli array di stringhe generano una casella di selezione multi-tag.

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

#### Data e ora

È possibile utilizzare l'identificatore di tipo `[DateTime]` per creare un selettore di data e ora.

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

#### Boolean

È possibile utilizzare un selettore di tipo `[Bool]` per creare un interruttore.

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

#### Integer

È possibile definire un selettore numerico utilizzando l'identificatore di tipo `[Int]`.

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

#### Parametro switch

È possibile definire un parametro switch utilizzando l'identificatore di tipo `[Switch]` per creare un interruttore.

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

#### Enumerazioni

È possibile utilizzare i valori System.Enum per creare caselle di selezione. Ad esempio, può utilizzare `System.DayOrWeek` per creare una casella di selezione del giorno della settimana.

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

#### PSCredential

Quando si specifica un `PSCredential`, all'utente verrà presentato un menu a discesa con le credenziali disponibili come [variabili](/powershell-universal/it/piattaforma/variables.md#creating-a-secret-variable).

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

#### File

È possibile consentire agli utenti di caricare file utilizzando il tipo `[File]`.

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

I file saranno disponibili come oggetto `PSUFile` nei suoi script. Questo oggetto dispone di un array `byte[]` che può utilizzare per elaborare il file.

Ad esempio, può ottenere il contenuto stringa del file convertendolo tramite le classi Encoding.

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

### Nome visualizzato

È possibile utilizzare `DisplayNameAtrribute` per impostare un nome visualizzato per il parametro dello script.

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

### Messaggi di aiuto

È possibile definire messaggi di aiuto per i suoi parametri utilizzando la proprietà `HelpMessage` dell'attributo `Parameter`.

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

### Parametri obbligatori

È possibile utilizzare l'attributo Parameter per definire i parametri obbligatori.

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

$RequiredParameter
```

### Valore predefinito

È possibile utilizzare sia valori statici sia valori predefiniti per i parametri. Il valore predefinito viene calcolato quando il job sta per essere eseguito.

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

$Parameter
$ExecutionTime
```

## ValidateSet

L'attributo `ValidateSet` viene utilizzato per imporre quali valori possono essere passati a un parametro. Scopra di più su [ValidateSet qui.](https://duckduckgo.com/?q=validateset\&ia=web) PowerShell Universal creerà automaticamente un menu a discesa con i valori forniti all'attributo `ValidateSet` per i parametri.

Ad esempio, uno script potrebbe definire un blocco param come segue.

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

## Passaggio di parametri da PowerShell

È possibile passare parametri da PowerShell utilizzando il cmdlet `Invoke-PSUScript`. Questo cmdlet supporta i parametri dinamici. Se il suo script dispone di un blocco `param`, questi parametri verranno aggiunti automaticamente a `Invoke-PSUScript`.

Ad esempio, avevo uno script denominato Script1.ps1 con il seguente contenuto.

```powershell
param($MyParameter)

$MyParameter
```

Potrei quindi richiamare tale script utilizzando questa sintassi.

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

Il risultato sarebbe che Hello viene restituito nel log del job e nella pipeline.

## Set di parametri

PowerShell Universal supporta i set di parametri. Quando è definito un set di parametri, viene fornito un menu a discesa che consente di passare da un set all'altro.

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


---

# 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/it/automazione/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.
