Hay 4 diferentes tipos de comandos en PowerShell:

  1. Cmdlet (Command-Let)
  2. PowerShell Functions
  3. PowerShell Scripts
  4. Native Windows commands
  5. Iremos examinado en diferentes artículos cada categoría. Este artículo se centrará en los cmdlet de PowerShell. Hay más de cien comandos PowerShell para aprender, pero no se aflija. A diferencia de otras interfaces de línea de comandos, los comandos de PowerShell han sido estandarizados usando una convención de nombre "verbo-sustantivo" conocida como un cmdlet (command let). Esta estandarización simplifica la curva de aprendizaje y provee una mejor descripción de lo que el cmdlet hace. Para ver una lista de todos los cmdlets disponibles en PowerShell escriba el siguiente cmdlet:
    get-command -type cmdlet <enter>
    
    Al ejecutarse se escriben todos los cmdlets disponibles en PowerShell, como se ve en la figura 1:
    Figura 1 - Lista de cmdlet disponibles en PowerShell.

    Como la lista de cmdlets, es extensa, cuando se ejecuta el cmdlet anterior se produce un desplazamiento de la ventana de la consola y no se pueden leer todos los cmdlets disponibles. Para evitar que esto ocurra, escriba el siguiente cmdlet. De esta manera, una vez llena la pantalla, queda en espera que el usuario presione enter y asi se irán escribiendo de a uno los restantes cmdlets (Ver figura 2):
    get-command -type cmdlet |more
    

    Figura 2 - de esta manera se evita el scroll de la pantalla y se pueden apreciar todos los cmdlets.
    La columna "Name" lista los cmdlets siguiendo la convención de nombre "verbo-sustantivo". Si queremos listar todos los cmdlet que usan un verbo específico, por ejemplo "Get", escribimos:
    get-command -Verb Get 
    
    Ejercicio: Liste todos los cmdlet que usan los verbos "Add", "Clear", "New", and "Set". Listar los comandos que usan un sustantivo específico es igual de fácil. Escriba el siguiente cmdlet para listar todos los cmdlets que usan el sustantivo "Service".
     get-command -Noun Service 
    
    Al ejecutarse el cmdlet, devuelve lo que se observa en la figura 3:
    Figura 3 - Existen 8 cmdlets que actúan sobre el sustantivo servicio.
    Tal como suena, el verbo describe una acción y el sustantivo describe contra que cosa tomar la acción.
    Es importante notar que PowerShell no es sensible a mayúsculas y minúsculas. En PowerShell "get-service" o "Get-Service" o aún "GeT-SerVIce" son el mismo comando.

    Consiguiendo Ayuda

    Cuando uno está aprendiendo una nueva tecnología, es importante encontrar ayuda lo más rápido y fácilmente posible. El cmdlet Get-Help ha sido diseñado para ese propósito. Seguramente, será el cmdlet más utilizado por usted hasta que ya sea un experto en PowerShell. Ejemplos de Get-Help:
    • Get-Help: Devuelve información acerca del cmdlet Get-Help. Incluye descripción, sintáxis, y comentarios.
    • Get-Help * : Devuelve información acerca de todos los temas de help disponibles.
    • Get-Help Get-Service: Devuelve información acerca de un cmdlet específico.

    Hay otras dos formas del cmdlet "Get-Help": el sustantivo "Help" y el parámetro "-?". Help, provee la misma información que "Get-Help *". Podemos usar Help con un cmdlet, de tres maneras:
    • Get-Help Get-Service
    • Help Get-Service
    • Get-Service -?

    Usando cmdlets

    En la figura 3 se listan 8 cmdlets asociados con el sustantivo Service: Get-Service, New-Service, Restart-Service, Set-Service, Start-Service, Stop-Service, y Suspend-Service. ¿Qué servicios hay en la computadora? Escriba el sigueinte cmdlet:
    get-service 
    Este cmdlet devuelve lo que vemos en la figura 4:
    Figura 4 - cmdlet que devuelve todos los servicios que existen en la computadora.
    Como se ve en la figura 4, el cmdlet, devuelve no sólo el nombre de cada servicio, si no también su estado

    Ejercicio 1: Parando y arrancando un Servicio

    . Para este ejercicio, usaremos los cmdlet Stop-Service y Start-Service. Para este ejemplo usaremos el servicio "Computer Browser". El estado actual de este servicio es "Running" y el "Status Type" es "Automático". Es importante que elijamso un servicio que tenga un "status type" ya sea automáico o manual. Si elige un servicio con un tipo de estado deshabilitado (disabled), este ejercicio no va a trabajar. Paramos un servicio con la siguiente sintáxis: Stop-Service [-nombre] o Stop-Service [-displayName].
    Esta no es la sintáxis completa del cmdlet Stop-Service. Si quiere ver la sintáxis completa, use el cmdlet Get-Help como vimos anteriormente.

    Pasos a seguir en el ejercicio:
    1. Primero mostremos el estado actual del Servicio Browser.
    2. Luego parémoslo usando el cmdlet Stop-Service.
    3. Chequeamos nuevamente el estado.
    4. Arrancamso el servicio.
    5. Finalmente, volvemos a chequear nuevamente el estado.
    Para hacer el ejercicio, escrimos los siguientes cmdlets:
     Get-Service -name Browser <enter>
     Stop-Service -name Browser <enter>
     Get-Service -name Browser <enter>
     Start-Service -name Browser <enter>
     Get-Service -name Browser <enter>
    

    Obtenemos la salida que se ve en la figura 5:
    Figura 5- Consultando el estado, parando y arrancando un servicio.
    Este ejercicio, le tiene que dar una idea de los beneficios que le otorga usar PowerShell. Con sólo un par de cmdlets fuimos capaces de parar e iniciar un servicio. Tradicionalmente, un Administrator tenía que lanzar el GUI (services.msc), seleccionar el servicio, y luego, ya sea pararlo o arrancarlo. No parece la gran cosa, hasta que usted necesite parar un servicio en múltiples computadoras. A través de PowerShell, será capaz de iniciar, detener, y cambiar los tipos de estado de un servicio en múltiples computadoras sin mucho esfuerzo, simplemente escribimos un script y ya está. Este artículo, ha introducido la convención de nombres de PowerShell, los cmdlets, cómo conseguir ayuda, y un ejemplo de usar cmdlet que actúan sobre los servicios. Para mas información sobre PowerShell vea el artículo anterior o el próximo que tratará sobre los Alias.
    respag
    Panamá - © 2012
Haga su donación para colaborar con La Escuela del Programador

La Escuela del Programador es un sitio web sin anuncios, sin ánimo de lucro, no es un sitio web comercial. Es el sueño de compartir con todos, muchos años de una gran pasión. Si realmente encuentra este sitio útil y lo aprovecha, le pido su generosa y no importa cuán modesta colaboración, simplemente para afrontar los costos de mantener este sitio disponible en internet.
No deseo lucrar con este sitio, ya que lo hago desinteresadamente, sólo le pido que, si puede, aporte (desde un dólar hasta lo que crea que puede dar), para afrontar los costos de dominio y hosting. Muchísimas gracias y ojalá juntos podamos hacer un sitio que sea una buena fuente de aprendizaje de programacíon en español.

Si no se siente en condiciones de colaborar, igualmente será bienvenido al sitio, es libre para todos y será un placer que encuentre mis artículos provechosos, pero si realmente me ayuda con una donación minima, seguramente, colaborará para que La Escuela del Programador se mantenga en la Web y crezca, conviertiendo a este sitio hecho con mucha pasión, dedicación y esfuerzo, en una buena fuente de aprendizaje.

Mis saludos cordiales y gracias por interesarse en mi sitio.

Rubén E. Spagnuolo
respag
Panamá - © 2012