27Jul

Geek School: Aprendizaje de variables, entradas y salidas de PowerShell

A medida que nos alejamos de simplemente ejecutar comandos y pasar a escribir scripts completos, necesitará un lugar temporal para almacenar datos. Aquí es donde entran las variables.

Asegúrese de leer los artículos anteriores de la serie:

  • Aprenda a automatizar Windows con PowerShell
  • Aprenda a usar los cmdlets en PowerShell
  • Aprenda a usar los objetos en PowerShell
  • Aprendizaje de formato, filtrado y comparación enPowerShell
  • Aprenda a usar el uso de Remoting en PowerShell
  • Uso de PowerShell para obtener información del equipo
  • Trabajo con colecciones en PowerShell

Y esté atento al resto de la serie durante toda la semana.

Variables

La mayoría de los lenguajes de programación permiten el uso de variables, que son simplemente contenedores que contienen valores. En PowerShell, también tenemos variables y son realmente fáciles de usar. Aquí es cómo crear una variable llamada "FirstName" y darle el valor "Taylor".

$ FirstName = "Taylor"

Lo primero que la mayoría de la gente parece preguntar es por qué ponemos un signo de dólar delante del nombre de las variables, y esa es en realidad una muy buena pregunta. En realidad, el signo de dólar es solo una pequeña sugerencia para el intérprete de órdenes al que queremos acceder al contenido de la variable( piense qué hay dentro del contenedor) y no el contenedor en sí.En PowerShell, los nombres de las variables no incluyen el signo de dólar, lo que significa que en el ejemplo anterior el nombre de las variables es en realidad "Nombre".

En PowerShell, puede ver todas las variables que ha creado en la variable PSDrive.

variable de gci:

Lo que significa que también puede eliminar una variable del shell en cualquier momento:

Eliminar-Variable de artículo: \ FirstName

Las variables no tienen que contener un solo objeto;también puede almacenar fácilmente varios objetos en una variable. Por ejemplo, si desea almacenar una lista de procesos en ejecución en una variable, puede asignarle el resultado de Get-Process.

$ Proc = Get-Process

El truco para entender esto es recordar que el lado derecho del signo igual siempre se evalúa primero. Esto significa que puede tener una tubería completa en el lado derecho si lo desea.

$ CPUHogs = Get-Process |Ordenar CPU -Descendiendo |seleccione -First 3

La variable CPUHogs contendrá ahora los tres procesos en ejecución que utilizan la mayor cantidad de CPU.

Cuando tiene una variable que contiene una colección de objetos, hay algunas cosas que debe tener en cuenta. Por ejemplo, llamar a un método en la variable hará que se invoque en cada objeto de la colección.

$ CPUHogs. Kill()

Que mataría a los tres procesos en la colección. Si desea acceder a un solo objeto en la variable, debe tratarlo como una matriz.

$ CPUHogs [0]

Al hacerlo, obtendrá el primer objeto de la colección.

¡No te atrapen!

Las variables en PowerShell están débilmente tipadas de forma predeterminada, lo que significa que pueden contener cualquier tipo de datos, ¡esto parece atrapar nuevos clientes todo el tiempo en PowerShell!

$ a = 10

$ b = '20'

Entonces tenemos dos variables, una contiene una cadena y la otra un número entero. Entonces, ¿qué sucede si los agregas? En realidad, depende del orden en que los agregue.

$ a + $ b = 30

Mientras

$ b + $ a = 2010

En el primer ejemplo, el primer operando es un entero, $ a, por lo que PowerShell cree que cree queestás tratando de hacer cálculos matemáticos y, por lo tanto, intenta convertir otros operandos en enteros también. Sin embargo, en el segundo ejemplo, el primer operando es una cadena, por lo que PowerShell solo convierte el resto de los operandos en cadenas y los concatena. Los scripts más avanzados evitan este tipo de errores al convertir la variable al tipo que esperan.

[int] $ Number = 5
[int] $ Number = '5'

Lo anterior resultará en la variable de Número que contiene un objeto entero con un valor de 5.

Entrada y Salida

Porque PowerShell está destinado a automatizar las cosas, querrá evitar solicitar información a los usuarios siempre que sea posible. Dicho esto, habrá momentos en los que no podrá evitarlo, y para esos momentos tenemos el cmdlet Read-Host. Usarlo es realmente simple:

$ FirstName = Read-Host -Prompt 'Escriba su primer nombre'

Lo que ingrese se guardará en la variable. La escritura de

es igual de fácil con el cmdlet Write-Output.

Write-Output "How-To Geek Rocks!"

¡Únete a nosotros mañana donde uniremos todo lo que hemos aprendido juntos!