> 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

## Parámetros

Los trabajos admiten la generación automática de 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 simplemente 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 usar los tipos String, String\[], Int, DateTime, Boolean, Switch y Enum.

#### String

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

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

![](/files/b0bgQh2vTAOEw58V6m29)

#### Matrices de cadenas

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

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

![](/files/yvOLlha904saxY8g9GtB)

#### Fecha y hora

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

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

![](/files/QiE4GhMNe00D6KxspmB4)

#### Boolean

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

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

![](/files/egVrxO5baov4Fj4793L9)

#### Integer

Puede definir un selector de números usando el especificador de tipo `[Int]`.

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

![](/files/9onHvaT13uGAp7zGEgni)

#### Parámetro Switch

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

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

![](/files/aZpamBsRIDk9MyN7wBIn)

#### Enumeraciones

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

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

![](/files/YiwWkBUUOsVj9d5SxSfa)

#### PSCredential

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

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

![](/files/WYyrUq8BI32PS7tZtNOS)

#### File

Puede permitir que los usuarios suban ficheros usando 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 usar 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 usar el `DisplayNameAtrribute` para establecer un nombre para mostrar para el parámetro del script.

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

![](/files/Km6EN108nOJKxXsKmKoa)

### Mensajes de ayuda

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

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

![](/files/UlhiykIAuqljTZaaRJxg)

### Parámetros obligatorios

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

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

$RequiredParameter
```

![](/files/XsecyozlaffUBJIyztXu)

### Valor predeterminado

Puede usar valores estáticos y 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 imponer qué valores se pueden pasar 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
)
```

El resultado se muestra a continuación.

<figure><img src="/files/nYSB6g3yIBmou49qwZfQ" alt=""><figcaption><p>Atributo ValidateSet</p></figcaption></figure>

## Pasar parámetros desde PowerShell

Puede pasar parámetros desde PowerShell usando el cmdlet `Invoke-PSUScript`. Este cmdlet admite parámetros dinámicos. Si tiene un bloque `param` en su script, 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
```

Después podría invocar ese script usando 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 un menú desplegable que permite cambiar entre los conjuntos.

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

![Conjuntos de parámetros](/files/0NTEqPxUVI4oAxRVqBfx)


---

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