10Aug

Escuela Geek: aprender a usar los cmdlets en PowerShell

Si ha utilizado ipconfig o ha hecho ping a través del símbolo del sistema, está a punto 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 presentando 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 veía más o menos así:

Update-Help

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 pueda devolver más de un resultado. Para ver una lista de verbos legales en PowerShell, puede usar el cmdlet Get-Verb.

Conocer los verbos legales y recordar la regla de sustantivo singular realmente ayuda a adivinar los nombres de los cmdlet. Por ejemplo, supongamos que desea obtener una lista de servicios y su estado - eso es correcto, es tan fácil como Get-Service.¿Cómo crees que

obtendría una lista de los procesos en ejecución ? Así es, Get-Process hará el truco.

Get-Process

Esto hace que sea realmente fácil trabajar con cualquier tecnología. Por ejemplo, si tiene cargados los cmdlets de Exchange, podemos obtener fácilmente una lista de buzones en el servidor utilizando:

Get-Mailbox

Sin embargo, hay una excepción. Dejando de lado el intercambio, todos los demás comandos específicos de tecnología requerirán un prefijo. Por ejemplo, si quisiéramos obtener los usuarios que están actualmente conectados a través de Escritorio remoto, escribiríamos:

Get-RDUserSession

que se puede ver en la captura de pantalla a continuación.

Nota: esta captura de pantalla se tomó en un cuadro de servidor 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 explicaba que Exchange se enviaba antes de que este prefijo se añadiera a los cmdlets, por lo que nunca los implementó y nunca lo hará.

Alias ​​

Otra característica que ofrece PowerShell es la capacidad de tener múltiples formas de ejecutar el mismo comando, alias, si se quiere. Lo sorprendente de ellos es que incluyeron muchos comandos que podría haber estado utilizando en el símbolo del sistema, así como algunos alias de Linux. Por ejemplo, en PowerShell podemos obtener una lista de directorios usando:

Get-ChildItem

¿Usado para usar el símbolo del sistema? No te preocupes, te tienen cubierto.

¿Tiene un fondo Linux? Ellos te tienen cubierto allí también.

Cuando hace un par de años que scripting, tiendes a ser flojo y empiezas a usar alias mucho, pero esto no ayuda a los recién llegados que van a leer nuestro código. Para ver qué comando ejecuta un alias bajo el capó, puede usar lo siguiente:

Get-Alias ​​-Name ls

Por otro lado, si cree que es hora de intensificar su juego, puede usar el parámetro de definición para obtenertodos los alias para un cmdlet:

Get-ChildItem -Definition Get-ChildItem

Si proviene de algún otro entorno, puede agregar sus propios alias haciendo lo siguiente:

New-Alias ​​-Name 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 ejecute bajo el capó.

Una cosa a tener en cuenta es que pierde todos los alias que ha definido al cerrar el shell. Puede evitar esto agregando su definición a su script de perfil.

Truncamiento de parámetros

Windows PowerShell también permite truncar nombres de parámetros hasta el punto en que se vuelven ambiguos, es decir, hasta el momento 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 'Apple Mobile Device' -Com localhost

Si por casualidad los nombres de los parámetros son demasiado ambiguosrecibirá 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 producen una cadena, y a menudo hay una mejor manera de hacer lo mismo usando un cmdlet de PowerShell.

En lugar de producir una larga cadena de texto, ahora nos queda un objeto, que veremos en la edición de mañana de Geek School.