Escuela Geek aprendiendo a usar cmdlets en PowerShell
Si ha usado ipconfig o ping a través del símbolo del sistema, está a medio camino de convertirse en un ninja de PowerShell. Así que ven y únete a nosotros mientras descubrimos cmdlets en esta instalación de Geek School..
Asegúrese de revisar nuestro primer artículo que presenta PowerShell, y permanezca atento al resto de nuestra serie durante toda la semana..
La anatomía de un cmdlet
En la primera parte de la Serie vimos un cmdlet que se parecía a esto:
Ayuda de actualización
Los cmdlets de PowerShell tienen una sintaxis Verb-Noun, que se puede ver arriba. Lo importante a tener en cuenta es que el sustantivo siempre es singular, aunque el cmdlet puede devolver más de un resultado. Para ver una lista de verbos legales en PowerShell, puede usar el cmdlet Get-Verb.
Saber los verbos legales y recordar la regla del sustantivo singular realmente ayuda a adivinar los nombres de los cmdlets. Por ejemplo, supongamos que desea obtener una lista de servicios y su estado: correcto, es tan fácil como Get-Service. ¿Cómo crees que lo haríamos? obtener una lista de correr procesos - así es, Get-Process hará el truco.
Proceso de obtención
Esto hace que sea realmente fácil trabajar con cualquier tecnología. Por ejemplo, si tenía los cmdlets de Exchange cargados, podríamos obtener fácilmente una lista de buzones en el servidor usando:
Get-Mailbox
como sea, hay una excepción. Dejando de lado, todos los demás comandos específicos de tecnología requerirán un prefijo. Por ejemplo, si quisiéramos que los usuarios que actualmente están conectados a través de Escritorio remoto, escribimos:
Get-RDUserSession
Que se puede ver en la captura de pantalla de abajo..
Nota: esta captura de pantalla se tomó en un cuadro de Server 2012 ya que es donde encontrará la mayoría de los módulos específicos de tecnología.
Hace un tiempo, leí un artículo de Don Jones, el Padrino de PowerShell, donde explicó que Exchange se había enviado antes de que este prefijo se agregara a los cmdlets, por lo que nunca los implementó y nunca lo hará..
Alias
Otra característica con la que cuenta PowerShell es la capacidad de tener múltiples formas de ejecutar los mismos alias de comandos, por así decirlo. Lo sorprendente de ellos es que incluían muchos comandos que podría haber estado usando en el símbolo del sistema, así como algunos alias de Linux. Por ejemplo, en PowerShell podemos obtener una lista de directorios utilizando:
Get-ChildItem
¿Solía usar el símbolo del sistema? No te preocupes, te tienen cubierto..
¿Tienes un fondo de Linux? Ellos te tienen cubierto allí también.
Cuando ha estado ejecutando scripts durante un par de años, tiende a ser perezoso y comienza a usar mucho los alias, pero esto no ayuda a los recién llegados que van a leer nuestro código. Para ver qué comando está ejecutando un alias bajo el capó, puede usar lo siguiente:
Get-Alias -Nombre ls
Por otro lado, si crees que es hora de mejorar tu juego, puedes usar el parámetro de definición para obtener todos los alias de un cmdlet:
Get-ChildItem -Definición Get-ChildItem
Si viene de algún otro fondo, puede agregar sus propios alias haciendo lo siguiente:
New-Alias -Nombre icanhazfilez -Value Get-ChildItem
Obviamente, deberá reemplazar "icanhazfilez" con el nombre de su nuevo alias y Get-ChildItem con el cmdlet que desea que se coloque debajo del capó.
Una cosa a tener en cuenta es que pierde todos los alias que ha definido al cerrar el shell. Puede solucionar esto agregando su definición a su script de perfil.
Parámetros de truncamiento
Windows PowerShell también le permite truncar los nombres de los parámetros hasta el punto en que se vuelven ambiguos, es decir, hasta el punto en que PowerShell ya no puede determinar de qué parámetro está hablando. Por ejemplo:
Get-Service-Name 'Apple Mobile Device' -ComputerName localhost
Es lo mismo que:
Get-Service -Na 'Dispositivo móvil Apple' -Com localhost
Si por casualidad hace que los nombres de los parámetros sean demasiado ambiguos, obtendrá un error..
Comandos heredados
Finalmente, los comandos que conoces y amas seguirán funcionando en PowerShell..
ping www.google.com
Solo recuerde que las aplicaciones heredadas como ping generan una cadena y, a menudo, hay una mejor manera de hacer lo mismo con un cmdlet de PowerShell.
En lugar de enviar una larga cadena de texto, ahora nos quedamos con un objeto, que veremos en la edición de mañana de Geek School..