Microsoft PowerShell es una gran plataforma de scripting. Microsoft proporciona soporte de PowerShell para casi todos los roles y características de Windows Server. Puede utilizar PowerShell para automatizar tareas repetidas, así como para realizar tareas fácilmente utilizando la línea de comandos que normalmente realiza utilizando las herramientas GUI. Por ejemplo, en un entorno de producción, si necesita comprobar el estado de los parches en los servidores de Windows, utilizar el enfoque de secuencias de comandos de PowerShell es mucho más fácil que conectarse a cada servidor individualmente y luego comprobar el estado de los parches. Soy un usuario habitual de PowerShell y he diseñado miles de scripts de PowerShell en mis 18 años de experiencia en TI.

Antes de PowerShell, el principal lenguaje de scripting para realizar tareas operativas de Windows era Visual Basic Scripting. Aunque Visual Basic Scripting sigue existiendo y muchos administradores de TI todavía prefieren utilizar VB scripting, cabe mencionar que PowerShell reduce la complejidad del código. Por ejemplo, para comprobar los servicios de un ordenador con Windows, hay que escribir el código VBScript en un bloc de notas, guardar el archivo como .VBS y luego ejecutarlo mediante el archivo de ejecución del host CSCript. Pero utilizando PowerShell puede usar un sencillo cmdlet Get-Service que puede ayudarle a listar los servicios de un ordenador Windows rápidamente. Si necesitas guardar la salida en un archivo usando VB script, necesitarás de nuevo escribir un montón de código en el VB script, que implica abrir el fil, y luego escribir el contenido en el archivo. PowerShell simplemente no requiere que abra el archivo antes de que el contenido recuperado por un cmdlet de PowerShell pueda ser escrito en un archivo. Todo lo que necesita hacer es utilizar los cmdlets «Export-CSV» o «Add-Content».

Cmdlets: Los bloques de construcción de los scripts de PowerShell

PowerShell ofrece cmdlets (se pronuncia «command-lets»), a veces denominados herramientas de línea de comandos, que se pueden utilizar para obtener información sobre el sistema operativo, las aplicaciones instaladas en un equipo Windows, la información de red, el estado de los parches en el equipo Windows y mucho más. Es importante tener en cuenta que los cmdlets de PowerShell están escritos en .NET y utilizan clases .NET para realizar las tareas requeridas. Si desea averiguar qué cmdlets de PowerShell están disponibles en el equipo local, ejecute este comando:

Get-Command

Get-Command es un cmdlet de PowerShell que recupera cmdlets, funciones, filtros y scripts de PowerShell instalados en el equipo local. El comando anterior consulta todos los módulos de PowerShell instalados en el equipo local. Si necesita ver todos los comandos instalados en el equipo local en un orden, ejecute este comando:

Get-Command -Type cmdlet | Sort-Object -Property Noun |FT -GroupBy Noun

Tres tipos de operaciones PowerShell

PowerShell scripts
Usando PowerShell puede realizar tres tipos de operaciones. Son Get, Set y Remove. Cualquier cmdlet de PowerShell que empiece por «Get» se utiliza normalmente para recuperar información de los componentes de Windows. Por ejemplo, Get-ADUser realiza una operación de lectura contra la base de datos de Active Directory para recuperar la información del usuario. A continuación se muestran algunos ejemplos de uso del cmdlet de PowerShell Get-ADUser:

Get-ADUser -Filter * -SearchBase «OU=TestUsers,DC=TechGenix,DC=Com»

El comando anterior recupera todas las cuentas de usuario ubicadas en una unidad organizativa mientras que el comando siguiente recupera las propiedades asociadas a un único usuario de Active Directory:

Get-ADUser -Identity JohnThomas -Properties *

Los cmdlets de PowerShell que empiezan por «Set» se utilizan para editar la información de los componentes de Windows. Por ejemplo, mediante el uso de Set-ADUser puede varias tareas operativas como se muestra en los comandos siguientes:

Set-ADUser -Identity JohnThomas -HomeFolder \\Server1\%UserName%

Los comandos siguientes establecen la propiedad de correo para el usuario JohnThomas.

$ThisUser = Get-ADUser -Identity JohnThomas -Properties Mail
$ThisUser.Mail = [email protected]
Set-ADUser -Instance $ThisUser

scripts de PowerShell

Cualquier cmdlet de PowerShell que empiece por «Remove» se utiliza para realizar operaciones de eliminación. Por ejemplo, Remove-ADUser se puede utilizar para eliminar un usuario de Active Directory como se muestra a continuación:

Remove-ADUser -Identity JohnThomas

Combinación de cmdlets de PowerShell

Una de las mejores características que ofrece PowerShell es la posibilidad de combinar dos o más cmdlets de PowerShell en un solo comando de PowerShell. Dichos comandos se denominan a veces comandos PowerShell de una sola línea. Por ejemplo, si necesita eliminar todas las cuentas de usuario deshabilitadas de Active Directory, puede combinar los cmdlets de PowerShell Search-ADAccount y Remove-ADUser como se muestra en el siguiente comando:

Search-ADAccount -AccountDisabled | Where {$_.ObjectClass -eq «User»} | Remove-ADUser

Como puede ver en el comando anterior, el cmdlet de PowerShell Search-ADAccount realiza una búsqueda en todo el directorio activo para buscar cuentas deshabilitadas y, a continuación, mediante el operador de tubería (|), está indicando a Remove-ADUser que realice una operación de eliminación solo en los usuarios que se recuperan mediante Search-ADAccount.

Alias de PowerShell

Aunque muchos cmdlets de PowerShell son fáciles de leer y utilizar, PowerShell también proporciona una característica llamada alias de PowerShell. PowerShell es lo suficientemente inteligente como para completar el nombre de un cmdlet de PowerShell con una pulsación de la tecla Tab. En caso de que tenga dificultades para recordar el nombre de los cmdlets de PowerShell, puede crear alias de PowerShell. Por ejemplo, puede crear un alias para el cmdlet de PowerShell Get-MailBoxStatistics utilizando el siguiente comando:

New-Alias ShowMB Get-MailBoxStatistics

Cuando escriba «ShowMB» en la ventana de PowerShell, PowerShell buscará el cmdlet asociado al alias ShowMB y lo ejecutará.

Guardar información en un archivo CSV

Cuando se trata de guardar información en un archivo CSV, PowerShell ahorra mucho trabajo de scripting. PowerShell proporciona el cmdlet «Export-CSV» que puede utilizar con cualquier otro cmdlet de PowerShell. Por defecto, cualquier comando de PowerShell que ejecute muestra la información resultante en la ventana de comandos de PowerShell, a menos que añada Export-CSV al final del comando, como se muestra en el siguiente comando:

Get-ADUser -Filter * -SearchBase «OU=TestUsers,DC=TechGenix,DC=Com» | Export-CSV C:\Temp\AllUsersInAnOU.CSV

Nota que en el comando anterior, sólo estás añadiendo «Export-CSV» al final del comando para tener la salida exportada en un archivo CSV.

Como puedes ver, los scripts de PowerShell reducen el tiempo que se necesita para realizar las tareas operativas diarias. PowerShell es capaz de realizar tres tareas operativas; Get, Set y Remove y el 97 por ciento de los cmdlets de PowerShell comienzan con estas tres palabras para identificar fácilmente la función de un cmdlet de PowerShell. También explicamos lo fácil que es combinar dos cmdlets en un solo comando para que tus scripts de PowerShell sean más eficientes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.