2.1 Esto me recuerda a algo…

A primera vista es inevitable pensar que “esto es igual que el CMD“…

En algunos aspectos esto es cierto. Podemos utilizar comando tipicos del “CMD” como por ejemplo “cd” para cambiar de directorio o “mkdir” para crear un directorio de la misma forma en que lo haríamos en el ya clasico “CMD“.

Ademas tenemos tambien disponibles utilidades mas “modernas” como “fsutil“.

Hay que decir que Powershell lo podemos utilizar de dos maneras diferentes. La primera es de forma “interactiva“. Esta forma es la que vamos a utilizar de momento y la otra ya la veremos mas adelante, cuando tengamos mas conocimientos. En este modo introducimos los comandos despues del prompt del sistema operativo.

Como va a ser costumbre a lo largo de esta serie de articulos sobre Powershell, los diferentes apartados los intentare completar con ejemplos que lo clarifiquen un poco mejor. Y para empezar con ellos que mejor que hacerlo desde el principio con unos ejemplos bien sencillos:

Ejemplo 1:

Listar el contenido del directorio en el que nos encontramos.

dir

En la imagen podemos ver la forma en que nos muestra la información de la carpeta.

Ejemplo 2:

Posicionarnos en el directorio raiz del disco c: (si es que no estamos ya en el).

cd \

En este caso, si no dejamos espacio entre “cd” y la barra invertida (\), no dara un error.

Osea que recordad que debemos dejar un espacio.

Ejemplo 3:

Crear el directorio “power“.

mkdir power

Ejemplo 4:

Hacer un listado del directorio raiz de c:, pero esta vez se lo indicaremos.

dir c:\

Ahora podemos observar que está creado el directorio “power“.

Ejemplo 5:

Cambiar al directorio “power“.

cd power

Si queremos, podemos hacer otro listado del directorio actual y ver el resultado.

Como conclusion de este apartado sacamos que es muy parecido en aspecto al “CMD“, pero ya vermos que le podemos dar muchas mas funcionalidad que a este.

2.2 Command Completion:

Como podeis observar, el titulo de este apartado esta en ingles, no por nada, simplemente por que no se como traducirlo exactamente. Podriamos llamarlo: “completando comandos” o “finalizando comandos“, pero bueno, seguro que vais a entender bien la explicacion que voy a dar al respecto y os va a quedar muy claro.

Una caracteristica importante de la linea de comandos es esta (tab-completion). Esto nos permite introducir un comando parcialmente y pulsar la tecla “tabulador” para que Powershell intente completar el resto del comando.

A parte de poder utilizar esta caracteristica con los comandos de Powershell, tambien podemos utilizarla con ficheros. Si introducimos el comienzo de un fichero y pulsamos la tecla “tabulador“, Powershell completara el comando hasta donde pueda. Digo hasta donde pueda porque es bastante normal que tengamos varios ficheros cuyo nombre comience de la misma manera. En este caso, Powershell nos completaria hasta el ultimo caracter antes de la coincidencia.

Podemos pulsar la tecla “tabulador” mas veces para que nos vaya mostrando las diferentes opciones que tenemos hasta que coincida con la que nosotros necesitamos.

La mejor forma de entender esto es haciendo. Manos a la obra…

Ejemplo 6:

Abrimos Windows Powershell y tecleamos “get-“.

A continuacion pulsamos la tecla “tab” una vez y nos percatamos que ahora nos muestra: “Get-Acl“.

Si pulsamos nuevamente la tecla “tab” nos mostrara: “Get-Alias“.

Y si lo hacemos por tercera vez: “Get-AuthenticodeSignature“.

Bueno, y asi todas las entradas que coincidan en que su comienzo se “get-“. Al llegar al ultimo comando y volver a pulsar “tab“, volvera a empezar por el principio.

Os animo a que probeis por vuestra cuenta ya que es algo que utilizaremos mucho y cuanto antes nos acostumbremos a esta caracteristica, mejor que mejor.

2.3 Historial de comandos introducidos:

Otra caracteristica muy util que incorpora “Windows Powershell 1.0” es el “historial de comandos“.

El historial de comandos, por si no lo sabes ya, es una lista de los comandos que hemos ido introduciendo en la sesion actual de “Windows Powershell“. Imaginaos que teneis que volver a ejecutar un comando que sabeis que habeis introducido hace poco y quereis volver a introducirlo, sino completamente igual, moficiando algun parametro o argurmento. Para esto nos va a venir muy bien lo que voy a explicar a continuacion.

Si hemos introducido en la sesion actual algun que otro comando, podemos pulsar la tecla “flecha arriba“  para nos muestre el comando que acabamos de introducir. Si pulsamos varias veces mas nos ira mostrando los anteriores.

Si encontramos el que nos interesa y queremos volver a ejecutarlo “tal cual“, simplemente pulsamos “Intro“. Si por el contrario tenemos que modificar algun parametro o argumento, basta con hacerlo moviendonos por el comando con las teclas “flecha izquierda” y “flecha derecha“, borrar lo que no nos interesa e introducir lo que queremos añadir en el lugar adecuado y pulsar “Intro”.

F7.

Si pulsamos F7 nos abrira un “pop-up” en la ventana de Powershell en la que podemos ver una lista de los ultimos comandos instroducidos en la sesion actual. Para movernos por esta lista utilizaremos las teclas “flecha arriba” y “flecha abajo“.

Una vez posicionados en el comando que nos interesa, pulsamos “intro“.

Get-History

Todavia no hemos visto los commandlets de Powershell, pero como encaja en este apartado, no puedo dejar de mencionar este, aunque ya lo veremos en profundidad mas adelante.

Ahora vale simplemente con que sepamos lo que hace. Y lo que hace es mostrarnos la lista de los ultimos 32 comandos introducidos en la sesion actual. En los ejemplos que pondre mas adelante seguro que os queda mas claro, pero ya os digo que lo veremos en profundidad en otro articulo posterior. Para comprobar lo que hace, basta con introducir “get-history” en la linea de comandos de Powershell.

2.4 Formato de los comandos en Powershell.

En todo shell que nos podamos encontrar, los comandos tienes un formato especifico para que puedan ser interpretados correctamente. Y claro, Powershell no iva a ser diferente.

Como ya comente en el articulo anterior, los comandos en Powershell se llaman “cmdlets” (commandlets).

Normalmente un commandlet consiste en tres partes, aunque yo voy a añadir una cuarta:

  1. Un verbo.
  2. Un nombre.
  3. Uno o varios parametros (opcional).
  4. Uno o varios argumentos (opcional).

El verbo y el nombre estan separados por el caracter “guion” (-) y los parametros y argumentos por el caracter “espacio“. mas o menos podria quedar así:

verbo-nombre -parametro1 argumento1 -parametro2 argumento2

Espero que se vea bien, pero no os preocupeis que a medida que avancemos, entenderemos mejor todo este asunto.

Como ejemplos:

get-history

Nos muestra un lista de los ultimos comandos ejecutados (por defecto 32).

get-history -count 10

Este nos muestra los ultimos 10 comandos introducidos en la sesion actual. Podemos observar que en este caso hemos introducido el parametro “-count” y el argumento 10.

get-history 7

Muestra solo el comando numero 7, el que tiene el ID 7. Como ya he dicho antes, hay parametros que se asumen por defecto y auque no los escribamos en la consola, es como si lo hicieramos.

El comando anterior podria haberse escrito:

get-history -id 7

Y el resultado seria el mismo.

Para hacernos una idea, creo que es suficiente por ahora. Ya tendremos tiempo mas adelante de ajecutar commandlets mas complejos.

Seguro que os habeis dado cuenta, pero por si acaso os lo comento yo. El uso de mayusculas y minusculas es indiferente. Da igual que igual da.

————————————–

Venga, por ahora ya tenemos para practicarnos un poco con esto. Probad lo que hemos visto y si teneis alguna duda me la comantais, a ver si yo os puedo ayudar.

A pasarlo bien!!

——
Oscar Abad
http://www.xulak.com – Consultoría informática

marzo 12th, 2009

Publicado el: formacion, powershell, sistemas, tutoriales

Etiquetas: , , ,

9 Comments

  • Guillermo Javier Hernández Gutiérrez dice:

    Warning: pack() [function.pack]: Type H: illegal hex digit L in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit L in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit w in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit S in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit Z in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit s in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit n in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit v in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit M in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit G in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit G in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit J in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit x in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit M in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit x in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit K in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit X in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit r in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit j in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit M in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit L in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Warning: pack() [function.pack]: Type H: illegal hex digit I in /homepages/44/d326856421/htdocs/apinco/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 237

    Espero pueda usted ayudarme:

    Necesito trabajar bajo el ambiente de MCD

    Me posiciono en algún subdirectorio.

    Hago lo que tengo que hacer.

    Necesito irme a otro subdirectorio paralelo al que me encuentro.

    O necesito dirigirme a un subdirectorio anidado en algún otro lugar.

    Utilizar el viejo comando CD (change directory) a veces es muy difícil en tanto que los nombre de los subdirectorios en ocasiones son muy complicados (así es uno al crearlos).

    ¿Habrá alguna utilería, algún programita como el famoso NCD (Norton Change Directory) pero que sea él solito sin programas anexos?

    Algo sencillo para que pueda uno navegar de un subdirectorio a otro sin escribir tanto.

    Agradezco su atención.

    Javier Hernández
    liza...@yahoo.com.mx

    • oscar dice:

      Bueno dias, Guillermo Javier y gracias por visitar el blog.
      Igual es una tonteria por mi parte, pero no se a que te refieres con que trabajas bajo el ambiente MCD.
      Como el articulo en el que comentas es sobre Powershell, me imagino que te referiras a eso.
      Para cambiar de directorio en Windows Powershell a otro paralelo, por ejemplo, yo lo que haria seria bajar un directorio con: “cd ..” y luego, al igual que en linux, escribir el comando CD, pulsar algun caracter por el que comience el directorio al que quieres subir y pulsar la tecla de tabulacion. Si solo hay una coincidencia, el te la mostrara y podras aceptarla, si hay mas de una, cada vez que pulses la tecla de tabulacion, te ira mostrando las diferentes opciones.
      En cuanto a alguna utilidad para esto, lo desconozco, ya lo siento. Pero si algun dia me entero, te lo hare saber.
      Espero que sea esto lo que necesitas, si no es asi, comentamelo.
      Venga, saludos y a pasarlo bien!!

  • Guillermo Javier Hernández Gutiérrez dice:

    Perdón por escribir rápido y mal. No es mcd sino CMD.

    Lo otro lo voy a probar, muchas gracias.

  • Guillermo Javier Hernández Gutiérrez dice:

    Un excelente truco lo del tabulador, que los neófitos en-extremo desconocemos.

    Agradezco muchísimo que me hallas resuelto tan ingente problema. Además de mi más sincero reconocimiento a una persona tan solícita.

    • oscar dice:

      Me alegra que te pueda servir de ayuda, Guillermo Javier.
      Venga, ahora a darle caña al tabulador.
      Por cierto, prueba de vez en cuando, cuando ya hayas escrito algun que otro comando, a pulsar la tecla de “flecha arriba” y “fecha abajo”.
      Venga, a pasarlo bien!!

  • Dani dice:

    El link del apartado 3 no funciona.

    Gracias!

  • elkike dice:

    Estimado, hay alguna forma facil de guardar el error que me dio un comando a un log?

    Yo actualmente pregundo :

    ejecuto un comando powershell por ej Copy-Item
    If($?)
    {
    “Aca NO dio error! >> c:\Log.log
    }else
    {
    “Aca si dio error” >> c:\log.log
    }
    Y me gustaria guardar el error, el tema que si pongo

    “Dio el error $error” >> c:\log.log

    me guarda todos el histiorial de errores. Y me interesa solo el que dio en ese momento.

    Muchas gracias de antemano y muy util tus articulos!!!!
    Enrique.

Deja un comentario