| |
|
|
| |
-
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'
 |
|
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
|
|
|
|