You are on page 1of 14

TEMA

about_assignment_operators
DESCRIPCIN BREVE
Describe cmo utilizar operadores para asignar valores a las
variables.
DESCRIPCIN DETALLADA
Los operadores de asignacin asignan uno o ms valores a una variable.
Pueden realizar operaciones numricas con los valores antes de la
asignacin.
Windows PowerShell admite los siguientes operadores de asignacin.
Operador Descripcin
------- -----------
= Establece el valor de una variable en el valor especificado.
+= Aumenta el valor de una variable en el valor
especificado o anexa el valor especificado al valor existente.

-= Disminuye el valor de una variable en el valor especificado.

*= Multiplica el valor de una variable por el valor
especificado o anexa el valor especificado al valor existente.

/= Divide el valor de una variable por el valor especificado.

%= Divide el valor de una variable por el valor
especificado y, a continuacin, asigna el resto (mdulo) a la
variable.
++ Aumenta en 1 el valor de una variable, una propiedad
asignable o un elemento de matriz.
-- Disminuye en 1 el valor de una variable, una propiedad
asignable o un elemento de matriz.

SINTAXIS
Esta es la sintaxis de los operadores de asignacin:
<expresin-asignable> <operador-de-asignacin> <valor>
Las expresiones asignables incluyen variables y propiedades. El
valor puede ser un valor nico, una matriz de valores, un comando, una
expresin o una instruccin.
Los operadores de decremento e incremento son operadores unarios.
Cada uno de ellos presenta versiones de prefijo y postfijo.
<expresin-asignable><operador>
<operador><expresin-asignable>
La expresin asignable debe un nmero o debe ser convertible a un
nmero.
ASIGNAR VALORES
Las variables son espacios de memoria con nombre que almacenan
valores. Los valores se almacenan en variables mediante el operador de
asignacin (=). Se puede hacer que el nuevo valor sustituya al valor
existente de la variable o bien anexar un valor nuevo al existente.
El operador de asignacin bsico es el signo igual (=) (ASCII 61). Por
ejemplo, la instruccin siguiente asigna el valor Windows PowerShell a la
variable $MyShell:
$MyShell = "Windows PowerShell"
Al asignar un valor a una variable en Windows PowerShell, se crea la
variable si todava no existe. Por ejemplo, la primera de las dos
instrucciones de asignacin siguientes crea la variable $a y le
asigna el valor 6. La segunda instruccin de asignacin asigna el
valor 12 a $a. La primera instruccin crea una nueva variable.
La segunda instruccin solamente cambia su valor:
$a = 6
$a = 12

En Windows PowerShell, las variables no tienen un tipo de datos
especfico a no ser que se conviertan. Cuando una variable
contiene un solo objeto, toma el tipo de datos de ese objeto. Cuando
contiene una coleccin de objetos, la variable tiene el tipo de datos
System.Object. Por consiguiente, se puede asignar cualquier tipo de
objeto a la coleccin. En el ejemplo siguiente se muestra que es
posible agregar objetos de proceso, objetos de servicio, cadenas y
enteros a una variable sin generar un error:
$a = get-process
$a += get-service
$a += "cadena"
$a += 12

Dado que el operador de asignacin (=) tiene una precedencia
menor que el operador de canalizacin (|), no es necesario usar
parntesis para asignar el resultado de una canalizacin de
comandos a una variable. Por ejemplo, el comando siguiente ordena los
servicios en el equipo y, a continuacin, asigna los servicios
ordenados la variable $a:
$a = get-service | sort name
Tambin se puede asignar a una variable el valor creado por una
instruccin, como en el ejemplo siguiente:
$a = if ($b -lt 0) { 0 } else { $b }
En este ejemplo se asigna 0 a la variable $a si el valor de $b es
menor que 0. Se asigna a $a el valor de $b si el valor de $b no
es menor que cero.

OPERADOR DE ASIGNACIN (=)
El operador de asignacin (=) asigna valores a las variables. Si
la variable ya tiene un valor, el operador de asignacin (=)
reemplaza el valor sin generar ninguna advertencia.
La instruccin siguiente asigna el valor entero 6 a la variable $a:
$a = 6
Para asignar un valor de cadena a una variable, el valor debe
escribirse entre comillas dobles, como se muestra a continuacin:
$a = "ftbol"
Para asignar una matriz (varios valores) a una variable, se
separan los valores con comas, como sigue:
$a = "manzana", "naranja", "limn", "uva"
Para asignar una tabla hash a una variable, se utiliza la
notacin de tabla hash estndar en Windows PowerShell. Se escribe
un smbolo de arroba (@) seguido por pares de clave/valor
separados por signos de punto y coma (;), todos ellos entre
llaves ({}). Por ejemplo, para asignar una tabla hash a la
variable $a, escriba:
$a = @{uno=1; dos=2; tres=3}
Para asignar valores hexadecimales a una variable, el valor debe ir
precedido de "0x". Windows PowerShell convierte el valor hexadecimal
(0x10) en un valor decimal (en este caso, 16) y asigna ese valor a la
variable $a. Por ejemplo, para asignar el valor 0x10 a la variable
$a, escriba:
$a = 0x10
Para asignar un valor exponencial a una variable, se escribe el
nmero raz, luego la letra "e" y, a continuacin, un nmero que
representa un mltiplo de 10. Por ejemplo, para asignar a la
variable $a el valor 3,1415 elevado a una potencia de 1.000, escriba:
$a = 3.1415e3
Windows PowerShell tambin puede convertir kilobytes (KB),
megabytes (MB) y gigabytes (GB) en bytes. Por ejemplo, para
asignar el valor 10 kilobytes a la variable $a, escriba:
$a = 10kb
ASIGNACIN MEDIANTE EL OPERADOR DE ADICIN (+=)
La asignacin mediante el operador de adicin (+=) incrementa el
valor de una variable o bien anexa el valor especificado al valor
existente. La accin depende de si el tipo de la variable es
numrico o de cadena, y de si la variable contiene un solo valor
(un escalar) o varios (una coleccin).
El operador += combina dos operaciones. En primer lugar, suma y, a
continuacin, asigna. Por consiguiente, las instrucciones siguientes son
equivalentes:
$a += 2
$a = ($a + 2)

Cuando la variable contiene un solo valor numrico, el operador +=
incrementa el valor existente en la cantidad especificada en el lado
derecho del operador. A continuacin, el operador asigna el valor
resultante a la variable.
En el ejemplo siguiente se muestra cmo utilizar el operador += para
aumentar el valor de una variable:
C:\PS> $a = 4
C:\PS> $a += 2
C:\PS> $a
6

Cuando el valor de la variable es de cadena, se anexa a la cadena
el valor que figura a la derecha del operador, como sigue:
C:\PS> $a = "Windows"
C:\PS> $a +- " PowerShell"
C:\PS> $a
Windows PowerShell
Cuando el valor de la variable es una matriz, el operador +=
anexa a la matriz los valores que figuran en el lado derecho del
operador. A menos que se establezca explcitamente el tipo de la
matriz mediante una conversin, se puede anexar cualquier tipo de
valor a la matriz, como sigue:
C:\PS> $a = 1,2,3
C:\PS> $a += 2
C:\PS> $a
1
2
3
2
C:\PS> $a += "Cadena"
C:\PS> $a
1
2
3
2
Cadena

Cuando el valor de una variable es una tabla hash, el operador +=
anexa a la tabla hash el valor que figura en el lado derecho del
operador. Sin embargo, dado que el nico tipo que se puede
agregar a una tabla hash es otra tabla hash, todas las dems
asignaciones producen un error.
Por ejemplo, el comando siguiente asigna una tabla hash la variable $a.
A continuacin, se utiliza el operador += para anexar otra tabla
hash a la tabla hash existente, de tal forma que, en realidad, se
agrega un nuevo par de clave/valor a la tabla hash existente.
Este comando se ejecuta correctamente, como se muestra en el resultado:
C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += @{mode = "write"}
C:\PS> $a
Nombre Valor
---- -----
a 1
b 2
mode write
c 3
El comando siguiente intenta anexar un entero (1) a la tabla hash
en la variable $a. Se produce un error en este comando:
C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += 1
Solo se puede agregar una tabla de hash a otra tabla de hash.
En lnea:1 carcter:6
+ $a += <<<< 1
ASIGNACIN MEDIANTE EL OPERADOR DE SUSTRACCIN (-=)
El operador de asignacin por sustraccin (-=) disminuye el valor
de una variable en el valor especificado en el lado derecho del
operador.
Este operador no se puede utilizar con variables de cadena ni
para quitar un elemento de una coleccin.
El operador -= combina dos operaciones. En primer lugar, resta y, a
continuacin, asigna. Por consiguiente, las instrucciones siguientes son
equivalentes:
$a -= 2
$a = ($a - 2)

En el ejemplo siguiente se muestra cmo utilizar el operador -= para
disminuir el valor de una variable:
C:\PS> $a = 8
C:\PS> $a -= 2
C:\PS> $a
6

Tambin se puede utilizar el operador -= de asignacin para
disminuir el valor de un miembro de una matriz numrica. Para
ello, se debe especificar el ndice del elemento de matriz que se
desea modificar. En el ejemplo siguiente, se reduce en 1 el valor
del tercer elemento de una matriz (elemento 2):
C:\PS> $a = 1,2,3
C:\PS> $a[2] -= 1.
C:\PS> $a
1
2
2

No se puede utilizar el operador -= para eliminar valores de una
variable. Para eliminar todos los valores que estn asignados a
una variable, se utilizan los cmdlets Clear-Item o Clear-Variable para
asignar el valor $null o "" a la variable.
$a = $null
Para eliminar un valor determinado de una matriz, se utiliza la
notacin de matriz para asignar el valor $null al elemento de que
se trate. Por ejemplo, la instruccin siguiente elimina el
segundo valor (posicin de ndice 1) de una matriz:
C:\PS> $a = 1,2,3
C:\PS> $a
1
2
3
C:\PS> $a[1] = $null
C:\PS> $a
1
3

Para eliminar una variable se utiliza el cmdlet Remove-Variable.
Este mtodo resulta til cuando la variable se ha convertido
explcitamente a un tipo de datos determinado y desea una
variable sin tipo. El comando siguiente elimina la variable $a:
remove-variable a

ASIGNACIN MEDIANTE EL OPERADOR DE MULTIPLICACIN (*=) La
asignacin mediante el operador de multiplicacin (*=) multiplica
un valor numrico o anexa a una variable el nmero especificado de
copias del valor de cadena.
Cuando una variable contiene un solo valor numrico, ese valor se
multiplica por el valor que figura en el lado derecho del
operador. Por ejemplo, en el ejemplo siguiente se muestra cmo
utilizar el operador *= para multiplicar el valor de una variable:
C:\PS> $a = 3
C:\PS> $a *= 4
C:\PS> $a
12

En este caso, el operador *= combina dos operaciones. En primer lugar,
multiplica y, a continuacin, asigna. Por consiguiente, las instrucciones
siguientes son equivalentes:
$a *= 2
$a = ($a * 2)

Cuando una variable contiene un valor de cadena, Windows PowerShell anexa
al valor el nmero especificado de cadenas, como sigue:
C:\PS> $a = "archivo"
C:\PS> $a *= 4
C:\PS> $a
archivoarchivoarchivoarchivo

Para multiplicar un elemento de una matriz, se utiliza un ndice para
identificar el elemento que desea multiplicar. Por ejemplo, el
comando siguiente multiplica el primer elemento de la matriz
(posicin de ndice 0) por 2:
$a[0] *= 2

ASIGNACIN MEDIANTE EL OPERADOR DE DIVISIN (/=)
La asignacin mediante el operador de divisin (/=) divide un
valor numrico por el valor que se especifica en el lado derecho del
operador. Este operador no se puede usar con variables de cadena.
El operador /= combina dos operaciones. Primero, divide y, a
continuacin, asigna. Por consiguiente, las dos instrucciones
siguientes son equivalentes:
$a /= 2
$a = ($a / 2)

Por ejemplo, el comando siguiente utiliza el operador /= para
dividir el valor de una variable:
C:\PS> $a = 8
C:\PS> $a /=2
C:\PS> $a
4

Para dividir un elemento de una matriz, se debe utilizar un
ndice para identificar el elemento que se desea modificar. Por
ejemplo, el comando siguiente divide el segundo elemento de la matriz
(posicin de ndice 1) por 2:
$a[1] /= 2

ASIGNACIN MEDIANTE EL OPERADOR DE MDULO (%=)
El operador de asignacin por mdulo (%=) divide el valor de una
variable por el valor especificado en el lado derecho del operador.
A continuacin, el operador %= asigna a la variable el resto
(denominado mdulo). Este operador nicamente se puede utilizar cuando
la variable contiene un solo valor numrico. No se puede utilizar si la
variable contiene una variable de cadena o una matriz.
El operador %= combina dos operaciones. En primer lugar, divide y
determina el resto y, a continuacin, asigna el resto a la
variable. Por consiguiente, las instrucciones siguientes son
equivalentes:
$a %= 2
$a = ($a % 2)

En el ejemplo siguiente se muestra cmo utilizar el operador %=
para guardar el mdulo de un cociente:
C:\PS> $a = 7
C:\PS> $a %= 4
C:\PS> $a
3
OPERADORES DE DECREMENTO E INCREMENTO
El operador de incremento (++) aumenta el valor de una variable
en 1. Cuando se utiliza al operador de incremento en una
instruccin simple, no se devuelve ningn valor.
Para ver el resultado, debe mostrarse el valor de la variable,
como sigue:
C:\PS> $a = 7
C:\PS> ++$a
C:\PS> $a
8
Para forzar la devolucin de un valor, debe incluirse la variable y el
operador entre parntesis, como sigue:
C:\PS> $a = 7
C:\PS> (++$a)
8
El operador de incremento se puede colocar antes (prefijo) o despus
(postfijo) de una variable. La versin de prefijo del operador
incrementa la variable antes de que su valor se utilice en la
instruccin, como sigue:
C:\PS> $a = 7
C:\PS> $c = ++$a
C:\PS> $a
8
C:\PS> $c
8
La versin de postfijo del operador incrementa la variable
despus de haber utilizado su valor en la instruccin. En el ejemplo
siguiente, las variables $c y $a tienen valores diferentes porque el
valor se asigna a $c antes de que cambie $a:
C:\PS> $a = 7
C:\PS> $c = $a++
C:\PS> $a
8
C:\PS> $c
7
El operador de decremento (--) disminuye el valor de una variable
en 1. Al igual que sucede con el operador de incremento, no se
devuelve ningn valor cuando se utiliza el operador en una instruccin
simple. Para devolver un valor, se utilizan parntesis, como sigue:
C:\PS> $a = 7
C:\PS> --$a
C:\PS> $a
6
C:\PS> (--$a)
5
La versin de prefijo del operador disminuye la variable antes de
que su valor se utilice en la instruccin, como sigue:
C:\PS> $a = 7
C:\PS> $c = --$a
C:\PS> $a
6
C:\PS> $c
6
La versin de postfijo del operador disminuye la variable despus
de haber utilizado su valor en la instruccin. En el ejemplo
siguiente, las variables $d y $a tienen valores diferentes porque
el valor se asigna a $d antes de que cambie $a:
C:\PS> $a = 7
C:\PS> $d = $a--
C:\PS> $a
6
C:\PS> $d
7
TIPOS DE MICROSOFT .NET FRAMEWORK
De forma predeterminada, cuando una variable tiene un solo valor,
el valor que se le asigna determina el tipo de datos de la
variable. Por ejemplo, el comando siguiente crea una variable
cuyo tipo es Integer (System.Int32):
$a = 6
Para buscar el tipo de .NET Framework de una variable, se utiliza
el mtodo GetType y su propiedad FullName, como sigue. Es importante
asegurarse de incluir los parntesis despus del nombre del mtodo
GetType, aunque la llamada al mtodo no tenga ningn argumento:
C:\PS> $a = 6
C:\PS> $a.gettype().fullname
System.Int32
Para crear una variable que contiene una cadena, se asigna un valor de
cadena a la variable. Para indicar que el valor es una cadena, se
pone entre comillas, como sigue:
C:\PS> $a = "6"
C:\PS> $a.gettype().fullname
System.String

Si el primer valor asignado a la variable es una cadena, Windows
PowerShell tratar todas las operaciones como operaciones de cadena y
convertir los nuevos valores en cadenas. Esto sucede en el ejemplo
siguiente:
C:\PS> $a = "archivo"
C:\PS> $a += 3
C:\PS> $a
archivo3

Si el primer valor asignado es un entero, Windows PowerShell
tratar todas las operaciones como operaciones de enteros y
convertir los nuevos valores en enteros. Esto sucede en el ejemplo
siguiente:
C:\PS> $a = 6
C:\PS> $a += "3"
C:\PS> $a
9

El tipo de una variable escalar nueva se puede convertir en
cualquier tipo de datos de .NET Framework. Para ello, debe
escribirse el nombre del tipo de datos entre corchetes como
prefijo del nombre de la variable o del primer valor de asignacin.
Al convertir una variable, es posible determinar los tipos de datos que
se pueden almacenar en ella. Adems, se puede determinar cmo se
comportar la variable al manipularla.
Por ejemplo, el comando siguiente convierte la variable a un tipo
string:
C:\PS> [string]$a = 27
C:\PS> $a += 3
C:\PS> $a
273

En el ejemplo siguiente se convierte el primer valor, en lugar de la
variable:
$a = [string]27

Al convertir una variable a un tipo especfico, la convencin comn es
convertir la variable propiamente dicha, y no su valor. Sin embargo,
no puede se puede volver a convertir el tipo de datos de una variable
existente si su valor no se puede convertir al nuevo tipo de datos.
Para cambiar el tipo de datos, es preciso reemplazar su valor, como sigue:
C:\PS> $a = "cadena"
C:\PS> [int]$a
No se puede convertir el valor "cadena" al tipo "System.Int32".
Error: "La cadena de entrada no tiene el formato correcto."
En lnea:1 carcter:8
+ [int]$a <<<<
C:\PS> [int]$a =3

Adems, si se usa un tipo de datos como prefijo de un nombre de
variable, el tipo de esa variable se bloquea, a menos que lo invalide
explcitamente especificando otro tipo de datos. Si se intenta
asignar un valor que no es compatible con el tipo existente y no invalida
explcitamente el tipo, Windows PowerShell muestra un error, como se
muestra en el ejemplo siguiente:
C:\PS> $a = 3
C:\PS> $a = "cadena"
C:\PS> [int]$a = 3
C:\PS> $a = "cadena"
No se puede convertir el valor "cadena" al tipo
"System.Int32". Error: "La cadena de entrada no tiene el formato
correcto."
En lnea:1 carcter:3
+ $a <<<< = "cadena"
C:\PS> [string]$a = "cadena"

En Windows PowerShell, los tipos de datos de las variables que
contienen varios elementos en una matriz se administran de manera
diferente que los tipos de datos de las variables que contienen
un nico elemento. A menos que se asigne un tipo de datos
especficamente a una variable de matriz, el tipo de datos es siempre
System.Object []. Este tipo de datos es especfico de las matrices.
En ocasiones, se puede invalidar el tipo predeterminado
especificando otro. Por ejemplo, el comando siguiente convierte
la variable a un tipo de matriz string []:
[string []] $a = "uno", "dos", "tres"

Las variables de Windows PowerShell pueden tener cualquier tipo
de datos de .NET Framework. Adems, se puede asignar el nombre
completo de cualquier tipo de datos de .NET Framework que est
disponible en el proceso actual. Por ejemplo, el comando siguiente
especifica un tipo de datos System.DateTime:
[system.datetime]$a = "31/5/2005"

Se asignar a la variable un valor que se ajuste al tipo
System.DateTime. El valor de la variable $a sera el siguiente:
Martes, 31 de marzo de 2005 12:00:00 a.m.
ASIGNAR MLTIPLES VARIABLES
En Windows PowerShell se pueden asignar valores a mltiples
variables con un solo comando. El primer elemento del valor de
asignacin se asigna a la primera variable, el segundo elemento
se asigna a la segunda variable, el tercer elemento a la tercera
variable, etc. Por ejemplo, el comando siguiente asigna el valor
1 a la variable $a, el segundo, el valor 2 a la variable $b y, el
tercero, el valor 3 a la variable $c:
C:\PS> $a, $b, $c = 1, 2, 3

Si el valor de asignacin contiene ms elementos que variables,
todos los valores que sobren se asignarn a la ltima variable.
Por ejemplo, el siguiente comando contiene tres variables y cinco
valores:
$a, $b, $c = 1, 2, 3, 4, 5

Por consiguiente, Windows PowerShell asignar el valor 1 a la
variable $a y el valor 2 a la variable $b. Adems, asignar los
valores 3, 4 y 5 a la variable $c. Para asignar los valores de la
variable $c a otras tres variables, se utiliza el formato siguiente:
$d, $e, $f = $c
Este comando asigna el valor 3 a la variable $d, el valor 4, a la
variable $e y el valor 5, a la variable $f.
Tambin puede asignar un valor individual a mltiples variables
encadenndolas. Por ejemplo, el siguiente comando asigna el valor "tres" a
cuatro variables:
$a = $b = $c = $d = "tres"

CMDLETS RELACIONADOS CON VARIABLES
Adems de usar una operacin de asignacin para establecer el
valor de una variable, tambin se puede usar el cmdlet Set-Variable.
Por ejemplo, el comando siguiente usa Set-Variable para
asignar la matriz 1, 2, 3 a la variable $a.
Set-Variable -name a -value 1, 2, 3
VEA TAMBIN
about_Arrays
about_Hash_Tables
about_Variables
Clear-Variable
Remove-Variable
Set-Variable

You might also like