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

# Parámetros

Genere automáticamente formularios de entrada de trabajos de PowerShell Universal a partir de los bloques param de los scripts, con soporte para tipos como DateTime, PSCredential, File y ValidateSet.

## Parámetros

Los trabajos permiten generar automáticamente formularios con parámetros basados en el bloque `param` de su script. El tipo de control cambiará según el tipo que defina en el bloque. Los parámetros obligatorios también serán requeridos por la interfaz de usuario.

### Parámetros básicos

Los parámetros se pueden definir de forma sencilla sin ningún tipo de atributo de parámetro y aparecerán como cuadros de texto en la interfaz de usuario.

```powershell
param($Test)

$Test
```

### Tipos de parámetros

Universal admite varios tipos de parámetros. Puede utilizar los tipos String, String\[], Int, DateTime, Boolean, Switch y Enum.

#### String

Puede definir parámetros de cadena especificando el tipo `[String]` o sin especificar ningún tipo. Las cadenas generarán un cuadro de texto.

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

#### Matrices de cadenas

Puede especificar matrices de cadenas utilizando el especificador de tipo `[String[]]`. Las matrices de cadenas generarán un cuadro de selección de múltiples etiquetas.

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

#### Fecha y hora

Puede utilizar el especificador de tipo `[DateTime]` para crear un selector de fecha y hora.

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

#### Boolean

Puede utilizar un selector de tipo `[Bool]` para crear un conmutador.

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

#### Integer

Puede definir un selector numérico utilizando el especificador de tipo `[Int]`.

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

#### Parámetro switch

Puede definir un parámetro switch utilizando el especificador de tipo `[Switch]` para crear un conmutador.

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

#### Enumeraciones

Puede utilizar valores System.Enum para crear cuadros de selección. Por ejemplo, podría utilizar `System.DayOrWeek` para crear un cuadro de selección del día de la semana.

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

#### PSCredential

Cuando especifique un `PSCredential`, se le presentará al usuario una lista desplegable con las credenciales disponibles como [variables](/powershell-universal/es/plataforma/variables.md#creating-a-secret-variable).

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

#### File

Puede permitir que los usuarios suban ficheros utilizando el tipo `[File]`.

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

Los ficheros estarán disponibles como un objeto `PSUFile` en sus scripts. Este objeto tiene una matriz `byte[]` que puede utilizar para procesar el fichero.

Por ejemplo, puede obtener el contenido de cadena del fichero convirtiéndolo mediante las clases Encoding.

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

### Nombre para mostrar

Puede utilizar el `DisplayNameAtrribute` para establecer un nombre para mostrar del parámetro del script.

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

### Mensajes de ayuda

Puede definir mensajes de ayuda para sus parámetros utilizando la propiedad `HelpMessage` del atributo `Parameter`.

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

### Parámetros obligatorios

Puede utilizar el atributo Parameter para definir parámetros obligatorios.

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

$RequiredParameter
```

### Valor predeterminado

Puede utilizar valores tanto estáticos como predeterminados para los parámetros. El valor predeterminado se calcula cuando el trabajo está a punto de ejecutarse.

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

$Parameter
$ExecutionTime
```

## ValidateSet

El atributo `ValidateSet` se utiliza para aplicar qué valores pueden pasarse a un parámetro. Obtenga información sobre [ValidateSet aquí.](https://duckduckgo.com/?q=validateset\&ia=web) PowerShell Universal creará automáticamente un menú desplegable con los valores proporcionados al atributo `ValidateSet` para los parámetros.

Por ejemplo, un script podría definir un bloque param de la siguiente manera.

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

## Pasar parámetros desde PowerShell

Puede pasar parámetros desde PowerShell utilizando el cmdlet `Invoke-PSUScript`. Este cmdlet admite parámetros dinámicos. Si su script tiene un bloque `param`, estos parámetros se añadirán automáticamente a `Invoke-PSUScript`.

Por ejemplo, tenía un script llamado Script1.ps1 y su contenido era el siguiente.

```powershell
param($MyParameter)

$MyParameter
```

Podría entonces invocar ese script utilizando esta sintaxis.

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

El resultado sería que Hello se muestra en el registro del trabajo y en la canalización.

## Conjuntos de parámetros

PowerShell Universal admite conjuntos de parámetros. Cuando se define un conjunto de parámetros, se proporciona una lista desplegable que permite cambiar entre los conjuntos.

```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/es/automatizacion/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.
