PowerShell se está convirtiendo rápidamente en el lenguaje de secuencias de comandos y la interfaz de línea de comandos preferidos para usuarios avanzados y profesionales de TI. Vale la pena aprender algunos comandos para comenzar, por lo que tenemos 5 cmdlets útiles para que los aprenda hoy.
Obtener orden
Get-Command es uno de los cmdlets más útiles de PowerShell porque lo ayudará a familiarizarse con PowerShell al permitirle encontrar ciertos cmdlets. El uso de Get-Command solo ciertamente no es muy útil, ya que solo escupirá todos los comandos de PowerShell.
Pero a partir de esto podemos ver que los objetos generados por PowerShell tienen una propiedad Name y una propiedad ModuleName. Con esta información, podemos refinar nuestra búsqueda buscando cmdlets que contengan ciertos términos. Por ejemplo, si quisiera encontrar todos los cmdlets que contienen la palabra «IP», podría hacer esto:
Get-Command –Nombre * IP *
Como puede ver, todavía estamos obteniendo bastantes resultados, nuestra siguiente opción es buscar en un módulo específico. En nuestro caso, elegiré el módulo NetTCPIP.
Get-Command –Módulo NetTCPIP –Nombre * IP *
Adquirir ayuda
Una vez que haya encontrado el cmdlet que está buscando usando Get-Command, querrá saber la sintaxis y cómo usar ese cmdlet específico. Aquí es donde entra Get-Help, si alguna vez usó la línea de comando en Windows, probablemente haya hecho algo como esto:
ipconfig /?
Bueno, eso no funciona en PowerShell porque en PowerShell se usa un espacio para separar un comando de sus parámetros. En su lugar, usamos Get-Help y pasamos un nombre de cmdlet a Get-Help como parámetro.
Adquirir ayuda
Obtener miembro
Get-Member nos permite obtener información sobre los objetos devueltos por un cmdlet. El problema con get-member es que se basa en la funcionalidad de canalización de PowerShell, para demostrar esto podemos usar el cmdlet Get-Process.
Como puede ver, la salida de PowerShell nos muestra algunas de las propiedades que puede ver en la parte superior de cada columna. El primer problema es que si bien estas son las propiedades que busca la mayor parte del tiempo, aún hay más. El segundo problema es que no muestra ningún método al que podamos llamar en el objeto. Para ver los métodos y propiedades, podemos dirigir nuestra salida a Get-Member, así:
Obtener-proceso | Obtener miembro
Si bien eso no significa nada para usted en este momento, tarde o temprano tendrá que usar Get-Member, y cuanto antes aprenda a usarlo, mejor. Por ejemplo, usando la información de la salida, podríamos hacer algo como:
Inicie el proceso notepad.exe
$ NotepadProc = Get-Process -Nombre del bloc de notas
$ NotepadProc.WaitForSalir ()
Inicie el proceso calc.exe
Este script iniciará el bloc de notas, luego asignará la salida de «Get-Process -Name notepad» a la variable $ NotepadProc, luego llamamos al método WaitForSalir en $ NotepadProc que hace que el script se detenga hasta que cierre el bloc de notas, una vez cierra el bloc de notas y se iniciará la calculadora.
$ _ (Objeto de canalización actual)
Si bien no es exactamente un cmdlet, es una de las variables especiales más utilizadas en PowerShell. El nombre oficial de $ _ es «el objeto de canalización actual». Se utiliza en bloques de secuencias de comandos, filtros, cláusula de proceso de funciones, donde objeto, para cada objeto y conmutadores. Sin embargo, es más fácil de explicar con un ejemplo, que nos lleva a nuestro siguiente y último cmdlet, Where-Object.
Objeto donde
Where-Object hace exactamente lo que parece, selecciona un objeto dependiendo de si cumple o no con ciertos criterios. Esto unirá $ _ y las propiedades que podemos ver usando Get-Member. Para ilustrar esto, dirigiremos la salida de Get-Process al cmdlet Where-Object.
Obtener-proceso | Where-Object {$ _. Name –eq «iexplore»}
Entonces, ¿qué está pasando aquí, preguntas? Bueno, lo primero que hacemos es obtener una lista de procesos en nuestra computadora y pasar la salida (usando el carácter |) a nuestro cmdlet Where-Object, que toma una configuración similar a un bloque de script. El bloque de script (definido por las llaves) le dice a los cmdlets Where-Object que seleccionen solo objetos cuyo parámetro de nombre sea igual a «iexplore», por lo que solo obtendremos una lista de instancias de IE en ejecución. Eso es todo, ¡diviértete!