Capítulo 4: Operaciones básicas con variables
Variables como objetos
Ya dijimos al principio de esta documentación que PowerShell está basado en .NET Framework. En la práctica, esto significa que nuestros scripts tendrán acceso a todo el modelo de objetos subyacentes en .NET Framework.
De este modo, cada variable que definimos en PowerShell es en realidad un objeto de .NET Framework. Y como tal, tendrá asociados una serie de métodos que podremos utilizar para realizar ciertas acciones sin tener que escribir ningún código complementario. De hecho, si te fijas en las actividades resueltas que te hemos ido proponiendo, en cada ejemplo se utilizan propiedades de los objetos que devuelven los cmdlets que utilizamos.
Podríamos decir que un método es un fragmento de código, asociado a un determinado objeto (en nuestro caso una variable o un dato), que tiene una función concreta.
Nuestro objetivo no es profundizar aquí sobre conceptos de programación orientada a objetos, pero sí te mostraremos cómo usar algunos métodos, asociados a diferentes tipos de datos, para resolver algunas tareas concretas.
Veamos un ejemplo: Imagina que tienes la siguiente variable y necesitas averiguar la posición en la que aparece la primera letra ‘o’.
La solución más sencilla es recurrir al método IndexOf, que nos permite buscar un determinado texto dentro del objeto en el que lo utilicemos:
Como ves, el resultado es 2 (y no tres, como cabía esperar). El motivo es que las posiciones de los caracteres se cuentan a partir de cero.
Otro ejemplo: obtener el contenido de la variable anterior, pero convertido en minúsculas:
En realidad, cada tipo de datos tiene multitud de métodos a los que podemos recurrir. Tantos que sería demasiado extenso abordarlos aquí. No obstante, a lo largo de esta publicación iremos incluyendo diversos ejemplos de su uso.
Si necesitas consultar la lista completa de métodos disponibles para cada tipo de dato, te recomiendo echar un vistazo a los siguientes enlaces:
-
String: https://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx#Methods
-
Char: https://msdn.microsoft.com/en-us/library/system.char(v=vs.110).aspx#Methods
-
Byte: https://msdn.microsoft.com/en-us/library/system.byte(v=vs.110).aspx#Methods
-
Int (Int32): https://msdn.microsoft.com/en-us/library/system.int32(v=vs.110).aspx#Methods
-
Long (int64): https://msdn.microsoft.com/en-us/library/system.int64(v=vs.110).aspx#Methods
-
Single: https://msdn.microsoft.com/en-us/library/system.single(v=vs.110).aspx#Methods
-
Double: https://msdn.microsoft.com/en-us/library/system.double(v=vs.110).aspx#Methods
-
Decimal: https://msdn.microsoft.com/en-us/library/system.decimal(v=vs.110).aspx#Methods
-
DateTime: https://msdn.microsoft.com/en-us/library/system.datetime(v=vs.110).aspx#Methods
-
Bool (Boolean): https://msdn.microsoft.com/en-us/library/system.boolean(v=vs.110).aspx#Methods
-
Array (ArrayList): https://msdn.microsoft.com/es-es/library/system.collections.arraylist(v=vs.110).aspx#M%C3%A9todos
-
Hashtable: https://msdn.microsoft.com/es-es/library/system.collections.hashtable(v=vs.110).aspx#M%C3%A9todos
-
Xml: https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx#Methods