# Símbolos y operadores

## Principales

* `#` - comentarios
* `<#...#>` - comentario con delimitadores
* `` ` `` - indicación de caracteres especiales dentro de comillas
* `-` (guion) - se coloca antes de los nombres de los parámetros de funciones/cmdlets/operadores de letras
* `%` - operador matemático que devuelve el residuo de la división (`11 % 5 = 1`)
* `%{}` – reemplaza el cmdlet `ForEach-Object`
* `;` - símbolo de separación de líneas (para escribir varias líneas de código en una)
* `=` - operador de asignación
* `&{}` – incrusta un scriptblock en una expresión
* `?` - reemplaza el cmdlet `Where-Object`
* `:` - para indicar parámetros conmutadores
* `.` – acceso a métodos dinámicos de la clase (`$datatable.Rows.Count`)
* `..` – delimitador de rango (`1..4 = @(1,2,3,4)`)
* `::` – acceso a métodos estáticos de la clase (`[Console]::WriteLine("PowerShell")`)
* `@` - operador de array:
  * obliga a que el valor sea un array, incluso si es un solo elemento o nulo;
  * puede crear tablas hash: `@{"Key" = "Value";"Key2"="Value2"}`
  * se utiliza para Splatting, es decir, pasar parámetros de función como un array o diccionario (`@arr / @dic`)
* `|` - tubería (como lambda):
  * `($obj| \cmdlet\) / ($collection[]| \cmdlet\)` - ejecuta el cmdlet para el objeto;
  * `$collection=@()| Foreach-Object{$_}` - ciclo en el que se utiliza `$_` como iterador;
  * `($proc = Get-Process Notepad* ) | Stop-Process` - termina todos los procesos que contienen en el nombre `Notepad` y devuelve todos los procesos terminados en `$proc`;
  * `(Get-Process Notepad* ) | Stop-Process` - sin devolver la lista.

## Operadores de comparación

* `-match "#pattern#"` - uso de expresiones regulares
* `-is [type]` - verificación de tipos
* `-isNot [type]` - verificación de tipos

Más sobre operadores de comparación, operadores aritméticos y lógicos:

{% embed url="<https://docs.sherparpa.ru/obuchenie-po-razrabotke-na-platforme-sherpa-rpa/obuchenie-powershell#id-2.-operatory-sravneniya-v-powershell>" %}

## Condiciones en arrays

* `-$array -\operador de comparación\ $obj` - devuelve un array de objetos que resultan de la comparación de cada elemento con el objeto, o False (un array no vacío es igual a True para expresiones lógicas)
* `-contains` - el array contiene el objeto (bool)
* `-notcontains` - el array NO contiene el objeto (bool)
* `-in` - el objeto está en el array (bool)
* `-notin` - el objeto no está en el array (bool)

> contains & in se diferencian en la notación $arr -contains $obj / $obj -in $arr

## Paréntesis

* `()` – Paréntesis redondos:
  * paso de argumentos,
  * agrupación de varias instrucciones (por ejemplo),
  * resolución de ambigüedades (las acciones en paréntesis se ejecutan primero),
  * creación de arrays.
* `{}` - Llaves:
  * agrupación de instrucciones (por ejemplo, en un bloque if),
  * incrustación de un script en una expresión (scriptblock).
* `[]` - Corchetes:
  * acceso a elementos de arrays y tablas hash,
  * filtro utilizando expresiones regulares,
  * especificación del tipo de datos esperado para una expresión,
  * acceso a espacios de nombres.

## Comillas

* `" "` - permiten colocar dentro el nombre de una variable y automáticamente convertirlo en su valor.
* `' '` - permiten colocar dentro el nombre de una variable, pero NO convertirlo en su valor.

> Las comillas soportan multilinealidad en el código (ENTER mueve el código a la siguiente línea, \`n - salto de línea en la salida).

> Las comillas se escapan con una comilla doble (como en VB) + las simples no necesitan ser escapadas dentro de las dobles y viceversa.

> Las comillas encerradas en el símbolo @ (antes y después) se llaman HereString y dentro de ellas todos los caracteres se tratan como texto. En el código, después de '@"' y antes de '"@' debe haber un ENTER.

## Signo $

* `$` - variables
* `$$` - final del último comando ejecutado, por ejemplo `$a="Hello"; $b=$$` por lo tanto `$b = "Hello"`
* `$^` - inicio del último comando ejecutado, por ejemplo `$a="Hello"; $b=$^` por lo tanto `$b = "$a"`.
* `$_ ($PSItem)` - se utiliza para pasar un valor al usar la tubería (`|`).
* `$?` - almacena el estado de ejecución del comando anterior. Devuelve True si el comando se ejecutó correctamente y False si hubo un error.
* `$()` - se utiliza para destacar una subexpresión en una cadena al usar comillas dobles. En este caso, la expresión entre paréntesis se procesa primero.
* `${}` - permite usar caracteres no estándar en el nombre de la variable. Por ejemplo: `${@,&$>?=*} = ″Hello, world″`.

## Secuencias de escape

PowerShell soporta un conjunto de secuencias de caracteres especiales que se utilizan para representar caracteres que no están en la codificación estándar.

> Las secuencias se llaman comúnmente secuencias de escape.
>
> Las secuencias de escape comienzan con el símbolo de barra invertida, llamado grave (ASCII 96), y son sensibles a mayúsculas y minúsculas.
>
> El símbolo de comilla invertida también puede ser llamado símbolo de escape.
>
> Las secuencias de escape solo se procesan en cadenas que están contenidas en comillas dobles o simples.

* `` `0 `` - NULL (no equivalente a $null)
* `` `a `` - Advertencia
* `` `b `` - Retroceso
* `` `e `` - ESC
* `` `f `` - Salto de página
* `` `n `` - Nueva línea
* `` `r `` - Retorno de carro
* `` `t `` - Tabulación horizontal
* `` `u{x} `` - Secuencia de escape Unicode
* `` `v `` - Tabulación vertical


---

# Agent Instructions: 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:

```
GET https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-designer/sherpa-designer-otvety-na-chasto-zadavaemye-voprosy/powershell/simvoly-i-operatory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
