> 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

## Parametri

I job supportano la generazione automatica di moduli con parametri basati sul blocco `param` dello 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 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 i parametri stringa specificando il tipo `[String]` oppure non specificando alcun tipo. Le stringhe generano una casella di testo.

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

![](/files/Hb4VHNFYCPux9h61yUK4)

#### Array di stringhe

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

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

![](/files/SjHhPxpn1SEi3HZP6zUn)

#### Data e ora

È possibile utilizzare lo specificatore di tipo `[DateTime]` per creare un selettore di data e ora.

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

![](/files/57vSDthZ5asArfuX9PbX)

#### Boolean

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

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

![](/files/FOyeH2uPbhnmo6HLk98h)

#### Integer

È possibile definire un selettore numerico utilizzando lo specificatore di tipo `[Int]`.

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

![](/files/J4hULxPA7bMzq4sgqe7b)

#### Parametro switch

È possibile definire un parametro switch utilizzando lo specificatore di tipo `[Switch]` per creare uno switch.

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

![](/files/tpI8RH1qxjp6b2X5hBfq)

#### Enumerazioni

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

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

![](/files/eSxokpQF5IwoLkKvV6j9)

#### 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
)
```

![](/files/g4Lp8tgHJLBoeiWpp9Sx)

#### File

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

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

I file saranno disponibili come oggetto `PSUFile` negli script. Questo oggetto dispone di un array `byte[]` che è possibile utilizzare per elaborare il file.

Ad esempio, è possibile 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
)
```

![](/files/MhqaqAeC8jkVTvugrgMG)

### Messaggi di aiuto

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

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

![](/files/5oIYl97d7WNNSm4mda7G)

### Parametri obbligatori

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

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

$RequiredParameter
```

![](/files/JswwlYS1JwygDAB3MTql)

### 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
)
```

Il risultato è mostrato di seguito.

<figure><img src="/files/9w7f66s8q9Wcq8OqLPUl" alt=""><figcaption><p>Attributo ValidateSet</p></figcaption></figure>

## Passaggio dei parametri da PowerShell

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

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

```powershell
param($MyParameter)

$MyParameter
```

Potrei quindi invocare quello 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 viene 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
)
```

![Set di parametri](/files/syZllWY7debbYv59lQU8)


---

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