En esta pequeña introducción veremos los intringulis de esta gran herramienta creada para los administradores de sistemas. Estamos hablando de PowerShell.
Pese a que con el anterior intérprete de comandos de Windows se podía hacer casi un 100% del trabajo a base de scripts, Windows PowerShell se diseña para mejorar si cabe el entorno de comandos e incorporar nuevas y variadas funciones.
Requisitos para instalar Windows PowerShell
Tener instalado algún sistema operativo tal como Windows XP SP2, Windows 2003 (con al menos Service Pack 1) o versiones posteriores.
Microsoft .NET FrameWork 2.0
Descargar Windows PowerShell
Empezando a trabajar con PowerShell
Veremos los principales comandos que podremos utilizar para familiarizarnos con PowerShell.
Para seguir los ejemplos, trabajaré con un directorio en el que tengo una serie de archivos. El archivo lo tengo alojado en mi unidad C y lo he llamado power. En este directorio tengo archivos .rar, .zip, .doc, .exe, etc… y mediante una serie de comandos, empezaremos a trabajar con estos archivos.
Empecemos!!
El comando Get-ChildItem
Este Cmdlet devolverá una lista con todos los elementos que hay dentro del directorio power.
Para ejecutar este comando la sintaxis sería la siguiente:
Get-ChildItem C:\power
A lo que devolvería una lista como la que aparece

Pero detengámonos un momento…. Si esto es un vulgar comando dir no? La respuesta es sí y no al mismo tiempo.
Get-ChildItem se diseña para que retorne la información que encuentre en una localización específica, pero puede ser utilizado con otras funciones de Windows PowerShell. Sin ir más lejos, para trabajar con el registro de Windows. Podemos invocar a este comando para que nos devuelva todas las subclaves de una entrada específica del registro, con este comando:
Get-ChildItem hkcu:\
Este comando nos devuelve como salida las ramificaciones del registro que cuelgan de la clave HKEY_CURRENT_USER
Si os fijáis, el comando dir también funciona en Windows PowerShell, y realiza la misma función. Esto es porque el comando dir es un alias, que direcciona al comando Get-ChildItem.
Para ver todos los alias que hay referenciados en PowerShell, podemos escribir estos comandos, que nos darán la misma salida:
Get-Alias
Get-Command –commandtype alias
Si ejecutamos el comando Get-Command dir, este comando nos devuelve como respuesta que ha encontrado un alias con nombre dir, pero que referencia directamente al comando Get-ChildItem.
Para ver toda la ayuda que disponemos sobre este comando, podremos tipear el comando Get-Help comando , y como salida nos mostrará toda la ayuda referenciada sobre el comando que necesitemos obtener ayuda.
Si ejecutamos la ayuda para el comando Get-ChildItem, veremos que este nos proporciona muchas opciones para alterar la salida tanto como queramos. Así que veamos unos ejemplos:
Por ejemplo, si quisiésemos ver todos los archivos del directorio C:\power, excluyendo de la salida los archivos con extensión .tmp, ejecutaríamos el comando:
Get-ChildItem C:\power –exclude *.tmp
Con este comando podemos excluir tantas extensiones como queramos, separando las extensiones por , (comas). Si quisiésemos excluir a parte alguna que otra extensión más, ejecutaríamos:
Get-ChildItem C:\power –exclude *.tmp, *.temp, *.hl_
Estaríamos excluyendo de nuestra salida los ficheros con extensión .tmp, .temp y .hl_.
También podemos incluir en nuestra salida sólo los elementos que nosotros queramos. Esto se consigue con el parámetro –include. El funcionamiento es similar al anterior, pero con un pequeño añadido. Tenemos que incluir en la ruta de búsqueda la cadena *.*
Por ejemplo, si quisiésemos listar sólo los archivos que tengan extensión .zip y .doc, el comando resultante para esta operación será:
Get-ChildItem C:\power\*.* -include *.zip, *.doc
Por defecto, en la salida se nos muestran los siguientes atributos:
Nombre
Modo
Ultimo Acceso
Tamaño
Mode LastWriteTime Length Name
——- —————— ——— ——–
-a— 28/01/2007 0:06 26624 12122006-djtest.doc
Nosotros podemos alterar esta salida, permitiéndonos mostrar o solo el Nombre, o sólo la última fecha de acceso, o el tamaño, el tamaño y el nombre, etc… Esto lo conseguimos filtrando la salida con el cmdlet Select-Object.
Así pues, si quisiésemos que en nuestra salida sólo nos mostrase el nombre y el tamaño de los ficheros, el comando que pondríamos sería:
Get-ChildItem C:\power\*.* –include *.zip, *.doc | Select-Object Name, Length
Truquito para el que no sepa inglés
Get-ChildItem C:\power\*.* –include *.zip, *.doc | Select-Object N*, Le*
Con este comando conseguimos exactamente lo mismo, pero con comodines.
Podemos ordenar la salida por tamaño:
Get-ChildItem C:\power\*.* -include *.zip, *.doc | Select-Object N*, Le* | sort length
Agrupar por tipos de extensiones:
Get-ChildItem C:\power | Group-Object extension
Espero que os guste esta primera impresión de PowerShell. En sucesivos artículos nos iremos adentrando un poco más en el mundillo de PowerShell para aprender a automatizar esas tareas que tanto nos cuestan….
1Saludo!