Home / Curiosidades web / Todo el poder de la línea de comandos

El atardecer en los Esteros del Iberá

Todo el poder de la línea de comandos

Las interfaces gráficas han sido de gran ayuda para los usuarios principiantes, y en gran medida han favorecido la integración de herramientas complejas en el escritorio. Sin embargo, todavía algunos fanáticos prefieren el modo texto y la línea de comandos: los proponemos hoy un recorrido por las principales ventajas de PowerShell ISE, la interfaz gráfica de línea de comandos de Windows.

La interface de línea de comandos, conocida por muchos como CMD (ver recuadro), es una de las herramientas más poderosas y menos usadas de Windows. Requiere bastante conocimiento para ser usada, sí, pero permite automatizar tareas mucho más allá de lo que el registro de Windows e incluso las herramientas de inicio (como Configuración del sistema, también muy conocida por el nombre de su archivo ejecutable, msconfig.exe). En síntesis: cualquier usuario avanzado puede amarla, y cualquier curioso puede divertirse un rato tratando de acceder a los beneficios ocultos en los comando del prompt.

En los años de DOS, el fanatismo por la línea de comandos llevaba a que los usuarios definieran -por caso- el color de las letras de la línea de comandos.
En los años de DOS, el fanatismo por la línea de comandos llevaba a que los usuarios definieran -por caso- el color de las letras de la línea de comandos.

CMD
Los usuarios que llaman a la interfaz de línea de comandos CMD lo hacen así porque, desde Windows 95, el acceso a través de [Inicio/Ejecutar] se hace escribiendo [CMD.EXE]. A diferencia de lo que se cree, el nombre del archivo ejecutable en cuestión, CMD, no hace referencia a siglas, sino que representa el apócope de command, por command line shell o interfaz de línea de comandos. Con CMD pueden ejecutarse instrucciones DOS-compatibles, y la lista completa de herramientas es todavía la disponible en MS-DOS 7.0, la versión incluida por primera vez en el citado Windows 95. Algunos ejemplos pueden ser:
*[CD NOMBRE_DE_CARPETA]: accede a una carpeta inmediatamente disponible en el árbol de directorios.
*[CD..]: retrocede a la carpeta de nivel inmediatamente anterior a la actual en el árbol de directorios.
*[MD NOMBRE_DE_CARPETA]: crea una carpeta en el nivel actual con el nombre indicado.

POWERSHELL

Windows Vista incorporó por primera vez, además de la interfaz clásica de línea de llamados -el famoso CMD- PowerShell, una interface de línea de comandos similar en apariencia a su antecesora pero que tenía la inmensa ventaja de ejecutar scripts y comandos de otros lenguajes de Microsoft más allá del propio de la administración de Windows, como SQL. Para ejecutar Windows PowerShell en Windows 8 buscaremos la aplicación [Windows PowerShell] en la pantalla de inicio. A primera vista, la única diferencia con la interfaz de línea de comandos es el fondo azul de las letras blancas.

Pero hay más: PowerShell permite, por otra parte, utilizar alias para acceder a comandos de Unix y demás, como los del lenguaje C#. Veamos algunos casos.

Windows PowerShell tiene una interfaz tan austera como la interfaz de línea de comandos.
Windows PowerShell tiene una interfaz tan austera como la interfaz de línea de comandos.

Cerrar la sesión actual
Un caso bien simple que nos ayudará a entender el poder de la línea de comandos es el del cierre de sesión con un modificador de la herramienta de línea de comando [shutdown.exe]. Podemos iniciar una sesión de PowerShell y probarla utilizando la siguiente sintaxis:

Shutdown.exe – l

Bloquear el equipo
Para cerrar la sesión actual en Windows 8 podemos presionar el botón [Inicio] de nuestro teclado, hacer clic en nuestro nombre en la pantalla de inicio y seleccionar la opción [Cerrar sesión]… o crear un archivo de texto de extensión BAT en el Bloc de notas ([Cerrar_sesión.bat], por ejemplo), anclarlo a la barra de tareas y cerrar de allí en más la sesión con un único clic. El contenido del archivo debería ser el siguiente comando:

rundll32.exe user32.dll,LockWorkStation

En este ejemplo, estaríamos utilizando el ejecutable [rundll32.exe] para aprovechar la biblioteca de vínculos dinámicos [user32.dll] y su función [LockWorkStation]. Pueden probarlo en PowerShell, pero antes guarden todo su trabajo.

¿El teclado que compramos no tiene una tecla dedicada al cierre de sesión? ¡No problemo!
¿El teclado que compramos no tiene una tecla dedicada al cierre de sesión? ¡No problemo!

TRUCO INEVITABLE
Notaremos que PowerShell no incluye una barra de menús. Tampoco permite, por cierto, usar los atajos de teclado más comunes para tareas realmente tan básicas como cortar, copiar y pegar. En ese contexto, ¿cómo podemos hacer para, por ejemplo, pegar una serie de comandos que encontramos en un sitio web? El truco básico es utilizar el botón derecho del mouse para pegar. Todavía, al menos en principio, no podremos copiar. Pero estaremos listos para hacer unas cuantas pruebas.

Apagar o reiniciar el equipo
Para apagar o reiniciar el equipo, tareas técnicamente muy similares, podemos aprovechar algunas herramientas de línea de comando como la citada shutdown.exe o tsshutdn.exe, siempre con los argumentos correctos. Pero, a la vez, podemos -¿no es acaso aprender más lo que queremos?- utilizar el comando Win32_OperatingSystem desde PowerShell:

(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(1)
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)

El primer caso, que incluye la marca (1), se aplica al apagado del equipo; el segundo, al reinicio.

Podemos agregar el modificador [/?] a cualquier comando para conocer detalles sobre su funcionamiento.
Podemos agregar el modificador [/?] a cualquier comando para conocer detalles sobre su funcionamiento.

POWERSHELL ISE

Ahora que estamos familiarizados con la línea de comandos en general y con PowerShell en particular podremos dedicarnos a trabajar con PowerShell ISE, la versión potenciada de línea de comando pero en un contexto gráfico de PowerShell. El componente ISE en el nombre indica que estamos ante una versión que apunta a ser un entorno de scripting integrado, lo cual nos permitirá escribir, probar y depurar scripts, es decir, guiones. Un script no es más que una secuencia predeterminada de comandos de cualquier nivel, algo relativamente fácil de realizar en una herramienta de comandos que nos permite insertar variables seleccionadas de un menú y que nos evita la necesidad de conocer el repertorio completo (o buena parte de él) en lo que a comandos refiere.
Empecemos por conocer la interfaz de PowerShell ISE.

Guía visual: Windows PowerShell ISE
Guía visual: Windows PowerShell ISE
1. Barra de menús
2. Herramientas de archivo. Los botones [Nuevo], [Abrir] y [Guardar] se aplican a scripts, mientras que cortar, copiar y pegar se pueden usar en cualquier contexto. El botón [Borrar panel de consola] equivale al comando [CLS] y tiene como objetivo “limpiar” el panel de consola y quitar de pantalla la respuesta de los comandos ejecutados.
3. Botones [Deshacer] y [Rehacer].
4. Botones de control de ejecución de scripts. Con [Ejecutar script] podremos probarlo, con [Ejecutar selección] evaluar el funcionamiento únicamente de la selección y con [Detener operación] parar la ejecución.
5. Permite ejecutar el comando o script en un equipo remoto.
6. Inicia Windows PowerShell.
7. Permite definir la ubicación del panel de scripts.
8. El botón [Mostrar ventana de comando] muestra la lista completa de comandos disponibles si no está activado el panel de comandos en el extremo derecho de la pantalla. El botón [Mostrar complemento de comando] activa o desactiva el panel.
9. Consola de comandos. Aquí pueden ejecutarse comandos cual si estuviéramos en una sesión de PowerShell y verse los resultados de los scripts puestos en marcha con el botón [Ejecutar script].
10. El complemento de comando muestra un panel con la lista completa de comandos de Windows disponibles. Al seleccionar un comando se muestra una breve descripción, y es posible también definir variables que luego podrán ser ejecutadas. De esta forma, puede prepararse el comando completo en el panel para ejecutarlo en la consola cuando sea necesario.
11. El botón [Ejecutar] pone en práctica en el panel de la consola de comandos el comando seleccionado con sus variables. [Insertar] sólo lo escribe en el prompt de modo que se pueda combinar el comando actual con otras variables, y [Copiar] lo coloca en el portapapeles para poder utilizarlo más tarde.
12. En el caso de que trabajemos con scripts podemos tomar nota de la ubicación de un comando, un modificador o una variable según su número de línea y columna.
13. El zoom, definido por defecto en el máximo nivel, permite ver más o menos código en un mismo panel de consola.

Comandos a medida
Para hacer un comando a medida en PowerShell ISE debemos incluir todas las variables a tener en cuenta. Supongamos que cada semana alguien nos entrega la unidad removible de una cámara de fotos o video, cuyas imágenes (y no cuyos videos) nosotros queremos respaldar. A la vez, queremos evitar ciertos videos animados que la cámara puede crear -de formato GIF- que algunos usuarios del dispositivo realizan, y todo lo queremos guardar en una capeta de la unidad C llamada [Respaldos]. Como solemos olvidarnos de insertar la tarjeta antes de respaldar, nos interesa que se nos pida una confirmación para la tarea antes de su ejecución, de modo de poder insertar la tarjeta a tiempo.
Abriremos entonces una sesión de PowerShell ISE y en la línea [Nombre] del panel [Comandos] escribiremos [copy]. De la lista de opciones elegiremos el elemento [copy-item], dado que lo que querremos copiar son los elementos de la tarjeta, y no -por ejemplo- sus atributos, copiables con [Copy-ItemProperty]. En [Path] escribiremos la letra de la unidad de origen, y en [Destination] la ruta completa de destino (C:Respaldos, en nuestro ejemplo). Podemos marcar la casilla de verificación [Confirm] para que se nos pida confirmación, e incluir [*.gif] en la línea [Exclude]. En [Include], en cambio, escribiremos [*.jpg, *.raw] para que se copien las imágenes estándares (de formato JPG) y aquellas sin compresión disponibles en la cámara. Si hacemos clic en [Insertar] PowerShell ISE nos ofrecerá un comando similar al siguiente:

Copy-Item -Path e: -Confirm -Destination c: -Exclude *.gif -Include *.jpg, *.raw

EN CONCLUSIÓN

Hemos hecho aquí un recorrido por todas las opciones de trabajo en línea de comando que Windows 8 ofrece de manera predeterminada. Si bien probablemente este artículo sirva apenas para encender la curiosidad de nuestros lectores, lo cierto es que el trabajo en línea de comandos puede resultar reconfortante, sumamente desafiante y hasta excitante. En http://es.scribd.com/doc/76741412/Windows-Power-Shell está disponible un manual muy amigable para los que tengan menos experiencia, y en todos los casos son muchas las comunidades de usuarios dispuestas a acompañar a los menos experimentados en su tarea. ¡Esperamos que compartan con nosotros sus experiencias!

¡Añade un comentario!

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