- Windows PowerShell - Scripts - Variables -

Las variables son designadas con el signo de dollar ($). El nombre de las variables puede contener letras, cifras y el guión bajo (_). No se permite utilizar nombres de variables predefinidas, como puede ser "$_".

Tipificación
Las variables pueden ser no tipificadas

$a = 5

o tipificada

$a = [int] 5
$a = [System.DateTime] "25.10.1925"

Como tipo de dato, puede adoptarse cualquier nombre de clase .NET, así como los tipos de datos definidos en WPS. Por ejemplo, "int", "System.Int32", "int32" significan lo mismo. "int" es la denominación de un tipo de dato definido en WPS, consistente en números enteros de 32 bits.
Las variables no tienen que declararse explícitamente, de donde resulta el peligro, al teclear que surjan errores, los cuales provocan resultados no deseados.
Con la directiva "Set-PSDebug –String" puede provocarse que WPS lance un mensaje de error cuando se lea una variable, a la cual no se le haya asignado un valor anteriormente.
Con la asignación de un valor a una variable, esta es declarada y permanece vigente en un determinado bloque, subrutina o todo el script.
Con "Remove-Variable" puede derogarse la declaración de una variable.
Independientemente, si una variable fue tipificada o no, es posible determinar, en cada momento, el tipo de datos a que se refiere. Las variable no tipificadas reciben automáticamente, el tipo de dato asignado anteriormente.
El método "Get-Type()" brinda el tipo de dato en forma de un objeto .NET del tipo "System.Type".
Dado que toda variable en WPS es una instancia de una clase .NET, cada variable tiene el método "GetType()", el cual es heredado de la clase .NET "System.Object".
Frecuentemente, los usuarios de WPS se interesan por el nombre de la clase, la cual puede leerse del "Fullname" o "Name".

$c = [System.DateTime] "15.12.1968"
"$c tiene el tipo de dato: " + $c.GetType().Fullname

Variable predefinidas

Variable Significado
$true Valor cierto
$false Vaslor falso
$OFS Signo de separación para un conjunto de objetos
$Home Carpeta base del usuario registrado
$PSHome Carpeta de instalación del Host-WPS
$Args Parámetro (el que es usado por funciones)
$Input Contenido actual del pipeline (para ser usado por funciones)
$_ Objeto actual del pipeline (para ser usado en bucles)
$StackTrace Orden consecutivo actual
$Host Informaciones sobre el Host de WPS
$LastExitCode Valor devuelto por la última aplicación de Windows o consola ejecutada
$Error Lista completa de los errores encontrados desde el inicio de WPS (la cantidad máxima de errores está determinada en "$MaximumErrorCount")

Ejemplo de la utilización de "$OFS"

$OFS="/" ; [string] ("x","y","z")


El resultado seria

x/y/z

Con el comando "Get-ChildItem Variable" se puede obtener todas las variables declaradas, las predefinidas y las definidas por el usuario. El comando "Dir Variable:p*" lista todas las variable, las cuales comiencen con "p" o "P".

Algunas de las variables predefinidas no pueden ser modificadas (constantes). El mismo efecto puede obtenerse con las variables definidas por el usuario como sigue:

Set-Variable nombrevariable –Option readonly

Debe tener en cuenta, en este caso, que el nombre de la variable no debe contener el símbolo dollar ($).
Las variables no se despejan solo en expresiones, si no también en las cadenas de caracteres.
Al declarar

[int] $count = 1
[string] $maquina = "E01"

puede sustituirse

$count.ToString() +". Acceso al ordenador " + $maquina

por

"$count. Acceso al ordenador $maquina"

En ambos casos, el resultado es el mismo:

"1. Acceso al ordenador E01"

Variables pueden despejarse en los parámetros de un cmdlet. Los comandos siguientes brindan los mismos resultados:

Get-DirectoryEntry ("Windows://" + $maquina)
Get-DirectoryEntry "Windows://$maquina"

Despejar una variable es como despejar una expresión. El símbolo dollar ($) puede introducir cualquier expresión, como pueden ser:

"1+3 = $ (1+3)"
"Horario actual: $((Get-Date).ToShortTimeString())"

Una variable no se despejará cuando la cadena de caracteres se encuentre entre comillas simples (' '). Ejemplo:

'$count. Acceso al ordenador $maquina'

previo
Imprimir!
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
próximo