Introducción a PowerShell (Parte 2: Cmdlets)

  En una entrada anterior de la presente bitácora, se ha hablado de la creación de un guión de PowerShell, una interfaz de consola con posibilidad de escritura y unión de comandos por medio de instrucciones.
  Este intérprete de comandos puede emplear comandos propios del sistema operativo Windows, mas también posee sus comandos particulares conocidos como cmdlets.
  Como se ha visto en la entrada anterior mencionada al principio, el cmdlet (pronunciado "command-let") es un comando ligero utilizado en Windows para tareas de administración y automatización que, al contrario que un comando básico de dicho sistema operativo, se trata de un componente de .NET (plataforma de desarrollo de soporte lógico gratuita, de código abierto y multiplataforma creada por Microsoft) que devuelve objetos en lugar de texto.
 En esta entrada se profundizará en este elemento de PowerShell.
   La sintaxis de un cmdlet se compone de dos términos:
  •   Verbo: Palabra que implica una acción aunque esa palabra no sea un verbo estándar en el idioma inglés. Cada verbo aprobado tiene un prefijo de alias correspondiente definido. Se utiliza este prefijo de alias en alias para comandos que usan ese verbo. Puede verse una lista de los verbos de los cmdlets usando el cmdlet Get-Verb.
  •   Sustantivo: Identifica la entidad en la que se realiza la acción, es decir, el recurso, objeto o similar. Puede verse una lista de sustantivos, o nombres, mediante el cmdlet Get-Command -CommandType Cmdlet | Select-Object -ExpandProperty Noun -Unique | Sort-Object.
 

 LOS VERBOS

  Para elegir correctamente un verbo para un cmdlet se deben seguir las siguientes pautas de nomenclatura:
  •   Uso de uno de los nombres de verbo predefinidos proporcionados por PowerShell.
  •   Se usa el verbo para describir el ámbito general de la acción y los parámetros para refinar aún más la acción del cmdlet.
  •   No se debe utilizar un sinónimo de un verbo aprobado.
  •   Se debe usar sólo el formato de cada verbo aprobado.
  •   No se deben emplear los siguientes verbos o alias reservados, puesto que tanto el lenguaje de PowerShell, como algunos cmdlets raros los usan en circunstancias excepcionales:
    •   ForEach (foreach).
    •   Ping (pi).
    •   Sort (sr).
    •   Tee (te).
    •   Where (wh). 
   Para definir acciones genéricas que se pueden aplicar a casi cualquier cmdlet, PowerShell usa la clase de enumeración "System.Management.Automation.VerbsCommon". En la tabla siguiente se enumeran la mayoría de los verbos definidos:

Verbo (alias)AcciónSinónimos que se pueden evitar

Add (a)

  Agrega un recurso a un contenedor o asocia un elemento a otro elemento. Este verbo se empareja con Remove.
  Append, Attach, Concatenate, Insert
Clear (cl)
  Quita todos los recursos de un contenedor, pero no elimina el contenedor.Erase, Flush, Nullify, Release, Unmark, Unset
Close (cs)  Cambia el estado de un recurso para que sea inaccesible, no disponible o inutilizable. Este verbo está emparejado con Open.
Copy (cp)
  Copia un recurso en otro nombre o en otro contenedor.
  Clone, Duplicate, Replicate, Sync
Enter (et)

  Especifica una acción que permite al usuario pasar a un recurso. Este verbo se empareja con Exit.
  Into, Push
Exit (ex) Establece el entorno o contexto actual en el contexto usado más recientemente. Este verbo se empareja con Enter.  Out, Pop 
Find (fd)
  Busca un objeto en un contenedor desconocido, implícito, opcional o especificado.   Search
Format (f)
  Organiza objetos en un formulario o diseño especificados.
Get (g)
  Especifica una acción que recupera un recurso. Este verbo se empareja con Set.  Acquire, Cat, Dir, Dump, Examine, Find, Obtain, Open,  Read, Search, Type
Hide (h)  Hace que un recurso no se detecte. Este verbo se empareja con Show. Block
Join (j)
  Combina recursos en un recurso. Este verbo se empareja con Split.   Associate, Combine, Connect, Unite 
Lock (lk)  Protege un recurso. Este verbo se empareja con Unlock.    Restrict, Secure
Move (m)
  Mueve un recurso de una ubicación a otra.  Migrate, Name, Transfer
New (n)
  Crea un recurso.   Allocate, Build, Create, Generate, Make 
Open (op)
  Cambia el estado de un recurso para que sea accesible, disponible o utilizable. Este verbo se empareja con Close.  
Optimize (om)
  Aumenta la eficacia de un recurso. 
Pop (pop)
  Quita un elemento de la parte superior de una pila.  
Push (pu)  Agrega un elemento a la parte superior de una pila.  
Redo (re)  Restablece un recurso al estado anterior a que se deshiciese. 
Remove (r)  Elimina un recurso de un contenedor. Este verbo se empareja con Add.   Clear, Cut, Discard, Dispose, Erase
 Rename (rn)


  Cambia el nombre de un recurso.   Change
Reset (rs)  Vuelve a establecer un recurso en su estado original.
Resize (rz)  Cambia el tamaño de un recurso. 
Search (sr)  Crea una referencia a un recurso de un contenedor.  Find, Locate 
Select (sc)  Busca un recurso en un contenedor.   Find, Locate
Set (s)  Reemplaza los datos de un recurso existente o crea un recurso que contiene algunos datos. Este verbo se empareja con Get.  Assign, Configure, Reset, Update, Write 
Show (sh)  Hace que un recurso sea visible para el usuario. Este verbo se empareja con Hide.  Display, Produce
Skip (sk)  Omite uno o varios recursos o puntos en una secuencia.  Bypass, Jump
Split (sl)  Separa partes de un recurso. Este verbo se empareja con Join.  Separate
Step (st)  Se mueve al siguiente punto o recurso de una secuencia.     
Switch (sw)  Especifica una acción que alterna entre dos recursos, como cambiar entre dos ubicaciones, responsabilidades o estados.   
Undo (un)  Establece un recurso en su estado anterior.
Unlock (uk)  Libera un recurso bloqueado. Este verbo se empareja con Lock.   Release, Unrestrict, Unsecure
Watch (wc)  Inspecciona o supervisa continuamente un recurso para ver los cambios.

  Otros tipos de verbos que se suelen usar son:
  •    Verbos de comunicaciones: Mediante la clase "System.Management.Automation.VerbsCommunications" se definen acciones que se aplican a las comunicaciones.
  •   Verbos de datos: A través de la clase "System.Management.Automation.VerbsData" son definidas acciones que se aplican al control de datos.
  •   Verbos de diagnóstico: Por medio de la clase "System.Management.Automation.VerbsDiagnostic" se definen acciones que se aplican a los diagnósticos.
  •   Verbos del ciclo de vida: Por intermedio de la clase "System.Management.Automation.VerbsLifecycle" son definidas acciones que se aplican al ciclo de vida de un recurso [conjunto de etapas por las que pasa un recurso informático (soporte físico, lógico o sistema completo) desde su concepción inicial o adquisición hasta su retirada o eliminación final].
  •   Verbos de seguridad: Con la clase "System.Management.Automation.VerbsSecurity" se definen acciones que se aplican a la seguridad.
  •   Otros verbos: Por la clase "System.Management.Automation.VerbsOther" son definidos aquellos nombres de verbo canónicos que no caben en una categoría de nombre de verbo específico, es decir, que no entran en ninguna de las categorías anteriores.
Ejemplo de uso del verbo Show.

LOS SUSTANTIVOS

  En PowerShell, un sustantivo es la palabra que va después del guion (-) en los comandos.
  Sus principales características son:
  •   Siempre en singular: Los sustantivos en PowerShell nunca van en plural.
  •     Convención de escritura: Se escriben utilizando la convención de nomenclatura PascalCase (la primera letra de cada palabra va en mayúscula).
  •   Identificador de recursos: Describe el elemento del sistema que el comando va a modificar, crear o consultar.
  A pesar de que no existe una lista cerrada de "sustantivos oficiales", puesto que cualquier desarrollador puede inventar un sustantivo para su comando,  los sustantivos en PowerShell se clasifican y dividen según su origen y las reglas de prefijos que exige la plataforma para evitar conflictos:
  •   Sustantivos nativos del sistema: Vienen integrados por defecto en PowerShell para administrar el sistema operativo. Se caracterizan por ser palabras simples y directas en inglés. Pueden ser de:
    •   Almacenamiento y archivos.
    •   Procesos y servicios.
    •   Configuración y diagnóstico. 
  •   Sustantivos con prefijo de módulo (especializados):  Cuando Microsoft o terceros crean herramientas para plataformas específicas, la regla de desarrollo exige añadir un prefijo corto al sustantivo, lo cual evita que comandos de distintos módulos se llamen igual [por ejemplo, los módulos de Azure usan el prefijo Az, los del Directorio Activo, AD, los de red, Net, y los de seguridad, Mp (Microsoft Defender)].
  •   Sustantivos personalizados: Aquellos sustantivos creados por el usuario cuando escribe sus propias funciones o módulos. Las buenas prácticas de desarrollo recomiendan dividirlos estructuralmente mediante el uso de prefijos propios:
    •   Prefijo de organización/proyecto: Mediante un prefijo significativo relacionado con la organización y/o el proyecto con el que se relacionará el cmdlet.
    •   Sustantivos compuestos: Si no se utiliza un prefijo empresarial, se debe ser sumamente específico uniendo dos palabras en PascalCase para no pisar un comando existente.
Ejemplo de uso del sustantivo LocalUser.

   Aguardo que la presente entrada haya sido interesante para el lector, si es así, espero que éste la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.