Power Shell (I de V)

Powershell es la nueva consola de comandos de Microsoft diseñada tanto para administradores como desarrolladores. Powershell amplia las capacidades y características de cmd, pero además incorpora la posibilidad de escribir y ejecutar scripts de forma nativa y automatizar tareas fácilmente.


 


A lo largo de esta serie de artículos iremos viendo los beneficios que nos aporta PowerShell a los administradores y desarrolladores, además veremos ejemplos de cómo se pueden automatizar tareas administrativas con pocas líneas de comandos, que de otra forma hubiera sido mucho mas costoso realizar.


 


Lo primero que hay que indicar es que PowerShell no viene instalado por defecto en Windows Vista, ni siquiera aparece como componente del sistema. En realidad se instala como una actualización del sistema y está disponible para Windows XP SP2, Windows Server 2003, Windows Vista y Windows Server 2008.


 


Lo podéis descargar desde aquí: http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx, en todas sus versiones disponibles hasta el momento.


 



PowerShell 


 


A diferencia de la mayoría de los shells, que aceptan y devuelven texto, Windows PowerShell se ha creado sobre Common Language Runtime de .NET (CLR) y .NET Framework, y acepta y devuelve objetos .NET. Este cambio esencial del entorno proporciona herramientas y métodos completamente nuevos para la administración y configuración de Windows.


 


Ahora con PowerShell vamos a poder hacer cosas como examinar el registro del sistema, navegar por las clases de la instrumentación (WMI) y por supuesto configurar y administrar todo en entorno Windows.


 


Antes de entrar en detalles técnicos me gustaría contaros porqué Microsoft decide desarrollar este nuevo shell.


 


Desde siempre, los administradores de sistemas y clientes han criticado a Microsoft por no proporcionar en sus sistemas  operativos una consola de comandos con la que se pudiera gestionar el 100% de las características del entorno, que fuera sencilla, entendible y sobre todo versátil.


 


Desde los tiempos de Windows NT ya teníamos el intérprete de comandos cmd.exe, junto con command.com de MSDOS, Windows 95 y 98. Si a esto le añadimos las numerosas herramientas que existen para la administración de Windows como son las herramientas de soporte o kit de recursos para cada una de las versiones hasta llegar a Windows Server 2003, los administradores hemos tenido que aprender y familiarizarnos con múltiples entornos de gestión  que en la mayoría de los casos no habían sido diseñadas bajo unos objetivos comunes. Por ello, la sintaxis, funcionalidad y facilidad de uso han sido siempre elementos demasiado heterogéneos.


 


Otro factor que tradicionalmente han provocado las críticas a Microsoft es la automatización de tareas. Con Windows 2000 Server y Windows Server 2003, Microsoft intentó mejorar las capacidades de automatización añadiendo la capa de Scripting o Windows Script Host (WSH). Esta capa de automatización acepta lenguajes como JScript y VBScript, pero se le pueden agregar otros motores como Perl.


 


Entonces, ¿porqué nace Windows PowerShell?. Bien, Microsoft ha estado durante los últimos años estudiando en qué áreas podría ofrecer sustanciales mejoras a sus sistemas, y sin duda una de ellas es la línea de comandos de Windows. Si comparamos la manejabilidad de la línea de comandos de Windows con UNIX, enseguida nos damos cuenta de las limitaciones de la primera.


 


Esto ha sido así porque históricamente Microsoft ha puesto todo su esfuerzo en el desarrollo de la interfaz gráfica, orientada a usuarios estándar. Un usuario medio no se preocupa demasiado por la línea de comandos, sin embargo esta estrategia que comercialmente ha sido muy exitosa, ha dejado fuera del punto de mira a administradores y profesionales de IT que han exigido siempre una mejora en este ámbito.


 


No olvidemos que cada versión de Windows es más compleja que su antecesora e incluye más subsistemas. Para soportar esta complejidad, Microsoft ha desarrollado conjuntos de objetos estructurados, los cuales se integran completamente en el entorno gráfico, pero que son mucho más difíciles de integrar con los entornos de texto tradicionales. Los desarrolladores siempre han tenido a su favor el conjunto de APIs y los SDK que incorporan cada uno de los productos de Microsoft, para poder extender la funcionalidad de la aplicación y personalizarla según las necesidades de la empresa.


 


A medida que Windows Server se incorpora cada vez más a los centros de procesamiento de datos de los negocios, la interfaz gráfica y el hacer clic continuamente dificulta enormemente las labores de los administradores y profesionales.


 


Por todo ello, nace PowerShell, una consola que ofrece un entorno unificado, con comandos y sintaxis homogénea, que permite automatizar tareas con su propio lenguaje de scripting pero que además es compatible con los scripts que ya tenemos implementados en JScript o VBScript.


 


Pero si todo esto no es suficiente, PowerShell se ha diseñado pensando en los administradores y profesionales de mediana y gran empresa en donde conviven plataformas mixtas Windows / UNIX. La curva de aprendizaje es mínima, ya que se pueden seguir utilizando los comandos más habituales UNIX en PowerShell como ls, mkdir, rmdir, mount, ps, cat, etc.


 


Durante esta serie de artículos abordaremos algunas de las más destacadas características de  PowerShell y lo voy a dividir en 5 entregas, de las cuales esta introducción es la primera. Las dos entregas siguientes nos acercaremos a los cmdlets más interesantes para Administradores de Sistemas, mientras que las dos últimas entregas hablaré de scrpts en PowerShell para programar y automatizar tareas.


 


Bien, para terminar con esta breve introducción, os dejo un claro ejemplo de la potencia de PowerShell:


 


Si queremos visualizar los servicios de un equipo en la consola, antes de Powershell tendríamos que haber escrito un script similar a este:


 


strComputer = «.»


Set objWMIService = GetObject(«winmgmts:» _


& «{impersonationLevel=impersonate}!\» & strComputer & «rootcimv2»)


Set colProcessList = objWMIService.ExecQuery(«Select * from Win32_Process»)


For Each objProcess in colProcessList


Wscript.Echo «Process: » & objProcess.Name


Next


 


Ahora con PowerShell


 


Get-process


 


 


get-process

4 comentarios sobre “Power Shell (I de V)”

  1. Soy esceptico con que Windows llegue a tener una funcionalidad en Shell similar a la de Unix, pero tambien he de reconocer que me sorpredio la inclusion de susbsistemas shell de Unix en Windows 2003 R2. He leido algo de Power Shell y parece que es un paso adelante por parte de Windows, pero tambien hay otras cosas que no me convencen en absoluto. Creo que habrá que ver como se desarrolla esta tecnología en el futuro y si se transforma realmente en un estandar.

  2. Hijole… que se amensen tantito los de Unix y le van a volar el mercado como lo hicieron con novell… en donde con un solo botón transferias usuarios configuracióne he impresoras…

    (ya se por donde vaz)

  3. Excelente documento estoy bastante interesado en aprender a utilizar esta herramienta debido a que muchas opciones del exchange 2007 no vienen habilitadas todas desde la consola
    Gracias

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *