Aprende Informatica Conmigo

  • Inicio
  • Contenido Anterior
    • VIDEOTUTORIALES
    • Windows Server 2008
    • POWERSHELL

27 abril, 2009 Por oscar 2 comentarios

Powershell – 12 – cmdlets para manejar variables

En el articulo anterior, en el cual comenzamos a ver un poco el tema de los scripts en Powershell ya comentamos un poco lo que son las variables y constantes. Ademas vimos algunos ejemplos.

En este articulo vamos a ver los diferentes cmdlets que tenemos disponibles en Windows Powershell 1.0 para trabajar con variables.

12.1- Get-Variable

Obtiene las variables de Windows Powershell de la consola actual. Podemos obtener los valores de las variables y filtrar las variables devueltas por nombre.

Parametros

-name <String[]>

Especifica el nombre de la variable.

-include <String[]>

Especifica unicamente aquellos elementos sobre los que actuara el cmdlet y excluye a todos los demas. Se permite el uso de caracteres comodin.

-exclude<String>

Omite los elementos especificados.

-valueonly <SwitchParameter>

Obtiene solo el valor de la variable o variables indicadas.

-scope <String>

Restringe las variables recuperadas al ambito especificado.

Ejemplo 1

>get-variable

pwsvariables01Obtiene todas las variables.

Ejemplo 2

>get-variable -name p*

pwsvariables02Obtiene las variables cuyo nombre comienza por «p«.

Ejemplo 3

>get-variable -name pshome -valueonly

pwsvariables03

Obtiene unicamente el valor de la variable «pshome«.

Si no hubiesemos especificado «-valueonly«, nos mostraria lo siguiente:

pwsvariables04

Ejemplo 4

>get-variable -include r*, h*, v* | format-list

Este comando nos muestra todas las variables cuyo nombre comienza por «r«, «h«, o «v«. El resultado se mostrara en formato de lista gracias a las redireccion que efectuamos al cmdlet «format-list«.

12.2- Set-Variable

Establece el valor de una variable. Podremos crear la variable si no existe ninguna con el nombre que le especificamos.

Parametros

-name <String[]>

Especifica el nombre de la variable

-include <String[]>

Especifica unicamente aquellos elementos sobre los que actuara el cmdlet y excluye todos los demas.

-exclude <String[]>

Especifica aquellos elementos sobre los que no actuara el cmdlet

-option <scopeitemoptions>

Cambia el valor de la propiedad options de la variable. Los valores validos son:

  • none:  ninguna opcion.
  • readonly:  no se puede modificar ni eliminar sin el parametro «-force«.
  • constant:  similar al anterior.
  • private:  solo esta visible en el ambito especificado en el parametro «-scope«.
  • allscope:  la variable se copia a todos los ambitos que se crean.

-description <String>

Nos permite facilitar una descripcion de la variable.

-value <object>

Valor que se va a asingnar a la variable.

-force <Switchparameter>

Lo usaremos para forzar la operacion que queramos llevar a cabo, como por ejemplo, modificar el valor de una constante.

Otros parametros:

-scope

-passthru

-whatif

-confirm

Ejemplo 1

>Set-Variable -name dia -value Domingo -description «dia festivo»

Con este comando creamos una nueva variable con el nombre «dia» cuyo valor es «Domingo» y su descripcion es «dia festivo«.

Para ver el contenido de esta variable que acabamos de crear, haremos lo siguiente tal y como hemos aprendido en el apartado anteriror:

>get-variable -name dia

pwsvariables06Para ver todas las propiedades de nuestra nueva variable podemos utilizar el cmdlet «format-list» para redireccionar la salida del anterior comando a este cmdlet de la siguiente manera:

>get-variable -name dia | format-list

pwsvariables07

Ejemplo 2

En este ejemplo vamos a crear una constante.

>set-variable -name omega -value 168 -description «valor de prueba» -option readonly

A continuacion, verificamos las propiedades de estanueva constante:

>get-variable -name omega | format-list

pwsvariables08

12.3- New-Variable

Por mas que lo reviso, no encuentro ninguna diferencia significativa entre este cmdlet y «set-variable«.

Por eso, podemos utilizar la descripcion que hemos realizado de «set-variable» para «new-variable«. Creo que son mas que similares. Yo diria que iguales.

12.4- Clear-Variable

Borra los datos almacenados en una variable, pero no elimina la variable. Como resultado, el nuevo valor de la variable es NULL (vacio).

Si se ha especificado un tipo de objeto o dato para la variable, clear-variable mantiene el tipo del objeto almacenado en la variable.

Parametros

-include <String[]>

Borra unicamente los elementos especificados. Se permite el uso de caracteres comodin.

-exclude <String[]>

Omite los elementos especificados.

-name <String[]>

Especifica el nombre de la variable que se va a borrar.

Otros parametros:

-scope <String>

-force <Switchparameter>

-passthru <Switchparameter>

-whatif

-confirm

Ejemplo 1

>get-variable dia | format-list

>clear-variable -name dia

>get-variable -name dia | format-list

Ya teniamos creada esta variable de un apartado anterior, osea que la aprovechamos.

En primer lugar, mostramos las propiedades de la variable «dia» mediante una redireccion a «format-list«.

Despues borramos el contenido de esta variable.

Por ultimo, mostramos todas las propiedades de dicha variable, comprobamos este resultado con el que nos dio antes de borrarla y vemos que la propiedad «value» ahora esta vacis, es decir NULL.

pwsvariables09

Se ve claro que la variable sigue exsistiendo aunque no tiene ningun valor, ¿no?

Ejemplo 2

Recordamos que creamos ha bien poco una constante llamada «omega«. Vamos a jugar un poco con ella…

En primer lugar intentamos borrarla o borrar su valor:

>clear-variable -name omega

Nos da un terrible error porque, si recordamos, las constantes no pueden cambiar de valor asi como asi. Para esto debemos utilizar el parametro «-force» como se muestra a continuacion:

>clear-variable -name omega -force

Ahora si!

Mostramos las propiedades de la variable «omega» para cerciorarnos que lo ha realizado correctamente.

>get-variable -name omega | format-list

pwsvariables10

Todo ha salido a la perfeccion. ¿contento?

Ejemplo 3

Continuando con el ejemplo anterior, ahora que la constante «omega» tiene valor NULL, vamos a asignarle otro valor.

Primero lo intentamos como si de una variable normal y corriente se tratase.

>set-variable -name omega -value omega2

Pues no. Nos da otro terrible error por que no podemos modificar el valor de una constante. Para hacerlo, debemos utilizar, igual que anteriormente hicimos, el parametro «-force«.

>set-variable -name omega -value omega2 -force

Ahora parece que si. Por lo menos no nos ha mostrado ningun mensaje de error. Lo comprobamos:

>get-variable -name omega | format-list

pwsvariables11

Pues si, ahora si que lo ha hecho bien.

12.5- Remove-Variable

Este cmdlet elimina una variable y su valor del ambito en el que esta definida, como la consola actual.

La diferencia entre este cmdlet y el anterior que hemos comentado (clear-variable) es que este si que elimina la variable completamente y no solo el valor, como hacia «clear-variable«.

No voy a explicar los parametros de este cmdlet por que es practicamente identico en cuanto a funcionamiento a «clear-varible«, y no vamos a repetir todo el rato lo mismo, que ya aburre, ¿que no?

Ejemplo 1

Vamos a aprovechar que aun disponemos de la variable «dia» que habiamos creado en otro apartado de este articulo para hacer este ejemplo. Eliminaremos la variable «dia» con «remove-item«. Pero antes, para estar seguros, vemos las propiedades de la misma.

>get-variable -name dia | format-list

Vemos que si que existe, aunque no tiene ningun valor.

Seguidamente procedemos a eliminarla.

>remove-variable -name dia

Todo bien, de momento. Aunque para estar seguros, hacemos una consulta de las propiedades de la variable a ver que nos dice…

>get-variable -name dia | format-list

Nos dice que no existe esta variable. Esto quiere decir, que se ha eliminado correctamente, que es lo que queriamos hacer.

Podeis ver todo el proceso en la siguiente captura de pantalla:

pwsvariables12

Ejemplo 2

Ahora vamos a intentar hacer lo propio con la otra variable, o mejor dicho, constante que habiamos creado anteriormente. Recordamos que la habiamos llamado «omega«.

Primero, para ponernos en situacion, hacemos una consulta de sus propiedades.

>get-variable -name omega | format-list

Vale, esta tiene de todo.

Ahora intentamos eliminarla como si fuera una variable normal:

>remove-variable -name omega

¡Anda! no podemos borrarla! Bueno, esto es normal porque para algo es una constante.

Para eliminarla utilizaremos el parametro «-force«.

>remove-variable -name omega -force

Ahora no nos muestra el mensaje de error de antes. ¿la habra eliminado?

Para estar seguros de esto, volvemos a realizar una consulta de sus propiedades.

>get-variable -name omega | format-list

¡Eso es! Nos dice que no existe. ¡Somos unos fenomenos!

Bueno, hasta aqui llega el tema correspondiente a los cmdlets que tenemos disponibles en Powershell para trabajar con variables.

No os pongais nerviosos por que ya estoy pensando en el siguiente articulo.

Venga, a pasarlo bien!!

Para ver mas articulos sobre powershell en el blog, puedes hacerlo en la pagina dedicada a Powershell.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, programacion, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, powershell, scripting, sistemas, utilidades

23 abril, 2009 Por oscar 2 comentarios

Powershell – 11 – Scripting (1)

11.1- Introduccion.

Windows Powershell tambien pone a nuestra disposicion su propio lenguaje de scripting para crear secuencias de comandos en el estilo clasico de programacion imperativa.

No creo que haya que decirlo, pero para el que no lo sepa, me gusta mucho la programacion aunque, por motivos diversos de la vida, nunca he podido desempeñar esta funcion en el terreno laboral y es una pena que me corroe desde hace mucho tiempo.

Pues bien, con Windows Powershell se me abre una puerta que me es muy grata. Aunque salvando las distancias con un leguaje de programacion como Java, C++, etc… creo que, si no hay otra cosa, Windows Powershell puede darme muchas satisfacciones en este sentido y espero que tambien lo haga con alguno de vosotros.

Bien es cierto que ahora mismo no estoy capacitado para establecer el alcance del mismo, pero lo que voy descubriendo dia a dia me hace barruntar que podemos realizar un sinfin de tareas, que de otra manera serian muy laboriosas, de una forma facil y sencilla.

El lenguaje de Script que Powershell (PSL) pone a nuestra disposicion incluye variables, bucles, condicionales, funciones y manejo de errores. Por supuesto aun estoy empezando con el, osea que no he podido trabajar con todas estas caracteristicas aunque si con alguna de ellas.

Tengo que recordar que todos los tutoriales que llevo realizados hasta la fecha sobre Powershell y los que continuare realizando, estan basados en la version 1.0 del mimo. El apartado del lenguaje de Script no creo que sufra muchos cambios en versiones posteriores, osea que nos vamos a centrar en esta version.

A modo de comentario os dire, para que lo sepais, que este lenguaje de script no es algo creado desde cero, sino que esta «inspirado» en los lenguajes shell de Unix como PERL, PHP, PYTHON…

11.2- Obtener ayuda

Ya comente en otro tutorial anterior sobre el mismo tema la forma o formas de que disponemos para obtener ayuda sobre los diferentes cmdlets. Pues bien, tambien podemos obtener ayuda sobre algunos de las caracteristicas del lenguaje de script.

Por ejemplo, si queremos obtener ayuda sobre el bucle «for«, podemos escribir:

>get-help about_for

pwscrit101

Si escribimos:

>get-help about

pwscrit102

Nos mostrara la lista de todos los coumentos «about«.

Otra forma de ver estos documentos es desde el directorio «es» dentro de la ruta en que esta instalado Windows Powershell.

En mi caso es: «c:\windows\system32\windowspowershell\v1.0\es«

11.3- Separacion de comandos.

Cada linea en un script de Windows Powershell es un comando. Un comando puede contener varios cmdlets separados po el simbolo «|«.

Tambien podemos escribir varios comandos en una misma linea separandolos con «punto y coma» (;).

Cuando una linea de un comando es muy larga, podemos escribir el caracater «`» al final de la linea para indicar que en la siguente linea continua el comando. Osea, que no acaba ahi.

Ejemplo.

Get-Command | where-object `

{$_.Name -like «get-*»}

Este comando, aunque son dos lineas, se comportara como uno solo como podeis observar en la captura que viene a continuacion:

pwscrit103En el ejemplo anterior, he creado un script llamado «separacion.ps1» que contien las dos lineas que he escrito antes.

Ejecuto el script de la forma que se ve en la captura: «.\separacion.ps1» y ejecuta el comando que contiene el mismo.

Poco a poco, no nos agobiemos…

11.4- Comentarios

Los comentarios en WPS se escriben utilizando el simbolo de almoadilla (#). Todo lo que se encuentre despues de este caracter, no sera interprestado por Powershell.

Ejemplo

#Este es un comentario.

11.5- Variables

Las variables comienzan con el caracter «$«.

Las variables en WPS pueden contener letras, numeros e incluso el caracter de subrayado (_).

Las variables en WPS, como en todo lenguaje de programacion, pueden ser de varios tipos, pero por ahora y para no complicarnos en demasia la vida, que es bastante complicada, vamos a realizar scripts sencillos en los que obviaremos este tipo de caracteristicas, aunque, si se tercia, ya las comentaremos mas adelante, pero bastante mas adelante.

Ejemplo 1

Si queremos crear una variable que contenga el numero 23, haremos lo siguiente:

$numero = 23

o si queremos guardar una frase:

$frase = «Esta es una frase»

y para mostrar el contenido de la variable basta con especificarla junto con el caracter «$«.

$frase

Vale, para que nos quede mas claro este asunto en un script, creamos un fichero llamado «variables.ps1» cuyo contenido podemos ver en la siguiente captura:

pwscrit104Podemos tener alguan duda con la ultima linea. Pero no he hecho mas que concatenar dos variables para que veais que se puede hacer de forma sencilla. El resultado de este script lo podeis ver a continuacion:

pwscrit105Se entiende, ¿no?

Si teneis alguna duda, me la comentais.

Las variables seran validas en el ambito en el que han sido creadas o declaradas. Esto quiere decir que si hemos declarado una varible dentro de un bucle «for«, esta varible existira o estara accesible siempre que estemos dentro del bucle «for«, una vez que haya finalizado el bucle o antes de comenzarlo, esta variable no existira. ¡Queda claro, ¿no?!

11.5.2- Variables predefinidas

Windows Powershell dispone de muchas variables predefinidas tambien llamadas «variables integradas» o «variables internas«.

A continuacion os muestro algunas de estas «variables internas«:

$true                     Valor true.

$false                    Valor false.

$home                  El directorio home del usuario actual.

$pshome             Directorio de insalacion de windows powershell.

$host                      Informacion de instalacion del host.

$error                   Lista de los errores que han ocurrido desde que se ha iniciado WPS.

Para obtener una lista de todas las variables disponibles en la sesion actual de Windows Powershell, tanto las internas como las que hemos definido nostros mismos:

>get-childitem variable:*

pwscrit106

Y si lo que queremos es obtener todas las variable cuyo nombre comience por «p»:

>get-childitem variable:p*

pwscrit107

Pero para obtener informacion sobre las variables, disponemos de otro cmdlet «get-variable» que vamos a ver en siguiente articulo relacionado con scripting en Powershell.

Por ahora basta con que nos quedemos con que existe.

11.5.3 Constantes

Las constantes, como a sabremos, son un tipo de variables un poco especiales, ya que su contenido no cambia.

El comando a utilizar para crear una constante seria:

Set-Varible -name nombreconstante -option readonly -value contenido

Ejemplo

>set-variable -name Pi -option readonly -value 3.14

Observando que en este caso no hemos utilizado el caracter $. Con Set-Variable no lo utilizaremos.

Sin embargo, si queremos trabajar con la constante, si que tendremos que utilizarlo.

Para ver el contenido de la constante Pi, haremos igual que si fuera una variable:

>$Pi

pwscrit108Bueno, creo que por ahora es suficiente. En el proximo tutorial sobre este tema, seguiremos descubriendo mas caracteristicas para poder realizar scripts que nos sirvan para nuestra labor cotidiana.

Venga, a pasarlo bien!!

Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.
  • 6-. Get-childitem.
  • 7-. Formateando la salida.
  • 8-. Get-Member.
  • 9-. Politica de ejecucion.
  • 10-. Alias.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, constantes, programacion, scripting, variables, windows powershell

20 abril, 2009 Por oscar Deja un comentario

Powershell – 10 – Alias

10.1- Alias

En articulos anteriores hemos comentado o ha salido el termino de Alias, sin especificar lo que son y para que sirven.

Bueno, pues ha llegado el momento de que lo veamos un poco en detalle por que es algo que podemos utilizar para facilitar el trabajo.

Un alias es un nombre alternativo o sobrenombre para un cmdlet o un elemento de un comando, como una funcion, un script, un archivo o un archivo ejecutable. El tema es que podemos utilizar el alias en lugar de el nombre completo del cmdlet.

Ya comentamos que podemos utilizar en Windows Powershell comandos como «dir» o «ls» y muchos mas. Estos no son mas que alias definidos a otros comandos de Powershell. En el caso de «dir» y «ls» el cmdlet al que hacen referencia es «get-childitem«.

Cmdlets de Alias

Powershell incluye varios cmdlets diseñados para trabajar con Alias.

Get-alias, new-alias, set-alias, export-alias e import-alias.

Nombres alternativos para comandos con parametros.

Es posible asignar una lias a un cmdlet, un script, una funcion o un archivo ejecutable, pero no podemos asignar un lias a un comnado y sus parametros. Por ejemplo, podemos asignar un alias a «get-command«, pero no podemos asingnar un alias a «get-command -name get-*«.

Para hacer esto, crearemos una funcion. Pero esto de las funciones es otra historia que ya veremos mas adelante.

Objetos de Alias.

Los alias de Windows Powershell estan representados por objetos que son instancias de la clase System.Management.Automation.AliasInfo.

Para ver las propiedades y metodos de los objetos de alias, obtenemos los alias y los canalizamos a traves de «get-member«.

Por ejemplo:

>get-alias | get-member

Para obtener una lista de los cmdlets relativos a alias:

>get-help *-alias


10.2- Get-Alias.

Get-alias obtiene los nombres alternativos de los cmdlets, las funciones y los archivos ejecutables que se han establecido e la sesion actual. Este conjunto incluye los alias integrados, los alias importados o definidos por el usuario y los alias que se han agregado al perfil de Windows Powershell.

Si especificamos uno o varios alias, «get-alias» obtiene el objeto de alias y muestra sus propiedades, incluido el objeto al que se asigna un alias, como el nombre completo de un cmdlet.

Parametros


-name <String[]>

Especifica el alias que se va a recuperar. De manera predeterminada, recupera todos los alias definidos para la sesion actual. El nombre de esta parametro es opcional.

-scope <String>

Especifica el ambito en el que el alias es valido. Los valores validos son: «global«, «local«, «script» o el numero correspondiente al ambito, donde 0 es el ambito actual y 1 su ambito principal. «local» es el valor predeterminado.

-exclude <String[]>

Omite los elementos especificados. Se permite el uso de caracteres comodin para introducir un patron.

Ejemplo1

>get-alias

Muestra todos los alias de la sesion actual.

Ejemplo 2

>get-alias -name g*

Muestra los alias cuyo nombre comienza por «g» y le sigue cualquier otro u otros caracteres.

Esto lo hacemos para poder ver los alias que se refieren normalmente a los cmdlets que comienzan por «get-«.

Ejemplo 3

>get-alias | where-object {$_.Definition -match «get-command»}

En este ejemplo hemos incluido el cmdlet «where-object» que todavia no hemos visto, pero nos basta con saber que este comando completo nos mostrara los alias que tenga definidos el cmdlet «get-command«.

10.3- Set-Alias

Crea o cambia un alias. Tambien podemos utilizar «set-alias» para reasignar el alias actual a un nuevo comando o cambiar cualquiera de sus propiedades. A menos que se agregue el alias al perfil de Windows Powershell, los cambios que realicemos en el, se perderan al finalizar la sesion o cerrar windows powershell.

Parametros


-name <String[]>

Especifica el nuevo alias. Pueden utilizarse caracteres alfanumericos en los alias pero el primer caracter no puede ser un numero.

-value <String>

Especifica el nombre del elemento del cmdlet o el comando al que se le está asignando un alias.

-description <Sting>

Especifica una descripcion del alias. Si la descripcion contiene espacios, la escribiremos entre comillas.

-scope <String>

Especifica el ambito en el que es valido este alias. Los valores posibles son: «global», «local», «scrip» o el numero correspondiente al ambito actual. «local» es el valor predeterminado.

Para obtener mas informacion al respecto:

>get-help -detailed set-alias


Ejemplo 1

>set-alias

Este comando nos permite crear un alias de forma interactiva. Tendremos que facilitar el nombre y el valor del mismo.

En este ejemplo crearemos el alias «np» cuyo valor sera «notepad.exe».

Ahora, para saber si hemos establecido correctamente el alias, podemos introcucir el siguiente comando:

>get-alias -name «n*»

Nos muestra todos los alias cuyo nombre comienza por «n».

Y por ultimo, podemos probar el alias escribiendo:

>np

No pongo la captura, pero lo que debe hacer es abrirnos el block de notas, igual que si escribimos «notepad.exe».

Ejemplo 2

Podemos hacer lo mismo que en el ejemplo anterior en un solo comando, sin que sea interactivo de la siguiente forma:

>set-alias -name np2 -value notepad.exe

o

>set-alias np2 notepad.exe

10.4- New-Alias

Este cmdlet es practicamente identico al aterior, a set-alias. Lo unico que los diferencia es que en el caso de «new-alias» no permite sobreescribir un alias existente. En el caso de que intentasemos esto, nos mostraria un mensaje de error como el de la siguiente captura:

Sin embargo, «set-alias» si nos permite sobreescribir un alias sin comentarnos nada.

Cada uno tiene lo suyo, por eso es que tenemos que andar con cuidado cuando estemos utilizando «set-alias» y pretendamos establecer un nombre que ya existe. En estos casos es aconsejable utilizar el cmdlet «get-alias» para comprobar que no existe el alias que vamos a crear.

10.5- Export-Alias

Exporta informacion sobre los alias definidos actualmente dentro del ambito del espacio de nombres espeficiado a un archivo.

Parametros


-path <String>

Especifica la ruta de acceso al archivo en que se almacenara la informacion sobre los alias. Se puede utilizar caracteres comodin.

-name <String>

Especifica los nombres de los alias que se van a exportar. Para indicar varios alias, los separaremos por comas (,). Si no especificamos ningun alias, exportaremos la informacion de todos los alias.

-scope <String>

Especifica el ambito dsde el que se deben exportar los alias.

Para mas informacion al respecto:

>get-help -detailed export-alias


Ejemplo 1

>export-alias -path alias.txt

Este comando exportara la informacion de todos los alias disponibles al fichero «alias.txt».

Si abrimos el fichero «alias.txt» veremos algo parececido a lo siguiente:

Ejemplo 2

>export-alias -name np -path np.txt

Si abrimos el fichero «np.txt«:

10.6- Import-Alias

Importa una lista de alias desde un archivo.

Nos puede servir para cargar unos alias que tengamos definidos en un equipo en concreto y queramos tenerlos disponibles en otros equipos.

Parametros


-path <String>

Especifica la ruta de acceso al archivo que contienen la informacion sobre los alias.

-scope <String>

Especifica el ambito que tendran estos alias.

Para obtener mas infomacion sobre «import-alias«:

>get-help -detailed import-alias


Ejemplo 1

>import-alias -path np.txt

Si ejecutamos este comando en la misma sesion de Windows Powershell en la que la hemos creado, nos dara un error puesto que ya existe dicho alias.

Para probarlo, cerramos Windows Powershell, lo volvemos a abrir e introducimos el comando.

Comprobamos que efectivamente existe el alias:

Bueno, hasta aqui el tema de los alias, espero que os haya aclarado un poco este asunto.

Venga, hasta la proxima!

Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.
  • 6-. Get-childitem.
  • 7-. Formateando la salida.
  • 8-. Get-Member.
  • 9-. Politica de ejecucion

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: alias, aprendeinformaticaconmigo, get-alias, scripting, set-alias, sistemas, windows powershell

8 abril, 2009 Por oscar 1 comentario

Powershell – 9 – Politica de ejecucion

Este articulo nos va a ser de gran ayuda cuando comencemos a escribir y / o ejecutar scripts en nuestro entorno, ya que podemos saber y establecer la politica de ejecucion de scripts de Powershell para evitar males mayores.

9.1- Get-Executionpolicy

Obtiene la directiva de ejecucion vigente en el shell. Esta directiva de ejecucion esta determinada por las preferencias del usuario que establezca mediante «Set-Executionpolicy» y la configuracion de directiva de grupo de ejecucion de Windows Powershell. La configuracion predeterminada es «restricted«.

Los valores que podemos encontrarnos y utilizar son: restricted, allsigned, remotesigned y unrestricted que ya los comentare en la proxima seccion de este articulo.

Parametros

Este cmdlet no tiene ningun parametro especifico para el, pero si que podemos utilizar los parametros comunes: -verbose, -debug, -erroraction, -errorvariable, -outvariable.

Para saber mas sobre estos parametros podemos escribir el siguiente comando:
>get-help about_commonparameters

Ejemplo 1

No hay muchos ejemplos que podamos hacer con este commandlet…

>get-executionpolicy

9.2- Set-Executionpolicy

Cambia la preferencia del usuario para la directiva de ejecucion del shell. Esta directiva determina si puede cargar archivos de configuracion (incluido su perfil de Windows Powershell) y ejecutar scripts, asi como los scripts, si los hubiera, que deben estar firmados digitalmente para que se puedan ejecutar.

A modo de resumen y para que nos entendamos un poco mejor, si ejecutamos un script de Powershell y nos da error diciendo que no podemos ejecutarlo, tendremos que revisar la politica de ejecucion con «get-executionpolicy» y establecer la nueva con «set-executionpolicy«.

Parametros

-executionpolicy <executionpolicy>

Especifica una nueva directiva de ejecucion del shell. El nombre del parametro es opcional.

Los valores validos para <executionpolicy> son:

Restricted: No carga archivos de configuracion ni ejecuta scripts. La configuracion predeterminada es «restricted».

Allsigned: Requiere que todos los scripts y archivos de configuracion esten firmados por un editor de confianza incluidos los scripts que escribamos en el equipo local.

sobre esto, prometo informarme mejor.

Remotesigned: Requiere que todos los scripts y archivos de configuracion descargados de internet esten firmados por un editor de confianza.

Unrestricted: Carga todos los archivos de configuracion y ejecuta todos los scripts. Si ejecutamos un script sin firmar descargado de internet, nos pedira permiso antes de ejcutarlo.

-Whatif

Describe lo que ocurrira si ejecuta el comando, sin ejecutarlo realmente.

Este parametro es comun a muchos cmdlets.

-confirm

Solicita confirmacion antes de ejecutar el comando.

Ejemplo 1

>set-executionpolicy -executionpolicy remotesigned

>get-executionpolicy

9.3- Adelanto sobre scripts.

Todavia no hemos creado ni ejecutado ningun script porque aun tenemos pocos conocimiento y es mejor esperar un poco para no amontonar conceptos sin mas.

De todas formas nos viene bien saber que los scripts en Powershell (por lo menos en la verion 1.0) tienen la extension .ps1. Se pueden escribir tranquilamente con el Notepad de windows.

Mas adelante ya veremos que disponemos de alguna opcion de software para escribir scripts de Powershell y manejarlos mas comodamente.

Venga, os espero en el proximo articulo.

A pasarlo bien!!
Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.
  • 6-. Get-childitem.
  • 7-. Formateando la salida.
  • 8-. Get-Member.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, get-executionpolicy, polica ejecucion, scripting, set-executionpolicy, sistemas, windows powershell

7 abril, 2009 Por oscar Deja un comentario

Powershell – 8- Get-member

8.1- Get-member

El cmdlet get-member obtiene informacion acerca de los miembros de los objetos. Recordemos que todo lo devuelto por un commmandlet es un objeto. Podemos utilizar get-member para conocer los metodos y propiedades de los objetos.

Cuando usamos el cmdlet get-member junto con get-childitem en el sitema de ficheros, devuelve una lista de todos los metodos y propiedades disponibles para trabajar con el objeto.

Si canalizamos la entrada a get-member, se genera un objeto «memberdefinition» para cada objeto de entrada. Por ejemplo, si canalizamos la salida de get-childitem a get-member en un directorio que contenga al menos un subdirectorio y un archivo, devolvera dos objetos memberdefinition. Uno de los objetos contendra informacionsobre el objeto «FileInfo«, mientras que el otro contendran informacion sobre el objeto «DirectoryInfo«. Get-member solo genera dos objetos memberdefinition, independientemente del numero de ficheros y directorios.

Si utilizamos get-member a traves del parametro InputObject, devolvera un unico objejo memberdefinition que representa el unico objeto de entrada.

Para recuperar informacion sobre miembros estaticos tendremos que utilizar el parametro -static.

Parametros

-name <String[]>

Especifica los nombres de los miembros sobre los que se va a recuperar informacion.

-inputobject <psobject>

Especifica los objetos sobre los cuales se va a recuperar informacion.

Si utilizamos la canalizacion para recuperar informacion sobre el contenedor, tenemos que agregar una coma (,) a la entrada canalizada.

-membertype <psmembertype>

Indica el tipo de miembros sobre los que se va a recuperar informacion.

Los tipos de miembros validos son: Aliasproperty, Codeproperty, Property, Noteproperty, Scriptproperty, Properties, PropertySet, Method, Codemethod, Scriptmethod, Methods, Parametrizedproperty, Memberset y All.

-static <Switchparameter>

Especifica las propiedades y los miembros estaticos que deben recuperarse.

Ejemplo 1:

>get-childitem | get-member

Este comando nos muestra todos los atributos posibles de los miembros del sistema de ficheros. En mi caso me da informacion sobre los objetos FileInfo y DirectoryInfo.

Esto nos puede dar una idea del alcance que puede tener Windows Powershell.

Ejemplo 2:

>get-childitem *.txt | get-member

En este caso obtenemos la lista de atributos posibles del objeto FileInfo.

No tenemos muchas mas posibidades de hacer ejemplos con este cmdlet debido a la reducida informacion que tenemos ahora de Powershell, pero segun vayamos aumentando la lista de cmdlets, aumentaran las posibilidades de nuestos programitas.

Venga, a pasarlo bien!!

Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.
  • 6-. Get-childitem.
  • 7-. Formateando la salida.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, get-member, scripting, sistemas, windows powershell

5 abril, 2009 Por oscar 1 comentario

Powershell – 7 – Formateando la salida

En este articulo vamos a ver unos cmdlets que nos van a servir para formatear la salida de otros cmdlets.

Normalmente, siempre vamos a utilizar estos cmdlets para manejar el resultado de otro cmdlet. La verdad es que estos commandlets por si solos no tienes mucha utilidad.

7.1- Format-List (fl)

Este commandlet aplica a la salida el formato de una lista de propiedades en la que cada propiedad aparece en una linea diferente. Ya que cada elemento dispone de mas espacio en una lista que en una tabla, Powershell muestra mas propiedades del objeto en un lista y hay menos posibilidades de que se trunquen los valores de las propiedades.

Para conocer todas las propiedades del objeto, podemos utilizar el cmdlet:

> cmdlet | Format-List *

Parametros

-property <object[]>

Especifica las propiedades del objeto que se va a mostrar y el orden en el que van a aparecer. Se pueden utilizar caracteres comodin.

Este parametro es opcional pero si se omite, las propiedades que aparezcan dependeran del objeto que se esta mostrando.

Los parametros «-property» y «view» no se pueden utilizar en el mismo comando.

-view <String>

Especifica el nombre de una vista o un formato de lista alternativo.

Hay mas parametros disponibles para este cmdlet. Para obtener mas informacion sobre ellos:

>get-help -detailed format-list

Ejemplo1:

>get-childitem | format-list

Podemos ver como es el formato que genera «format-list«.

Para compararlo, ahora podemos ejecutar:

>get-childitem

Se nota la diferencia, ¿no?

Ejemplo2:

>get-childitem | format-list -property name, length

El resultado es un listado formateado en el que se muestran las propiedades name y length (el que las tenga) de los elementos pasados por el cmdlet get-chilitem.

Ejemplo 3:

>get-childitem | format-list -property name > c:\power\listadoformat-list.txt

En este caso utilizamos el simbolo «>» que ya vimos para redireccionar la salida a un fichero de texto.

En estos ejemplos utilizamos get-childitem. Este cmdlet tiene unas propiedades pero recordad que cada cmdlet tiene sus propiedades osea que si el commandlet que pasa la informacion es otro, tenemos que utilizar las propiedades de este cmdlet.

No os preocupeis por que vamos poco a poco. Mejor asi…

7.2- Format-wide (fw)

Aplica a los objetos el formato de una tabla ancha en la que se muestra unicamente una propiedad de cada objeto. Podemos utilizar el parametro «property» para determinar que propiedad se va a mostrar.

Parametros

-property <objetct[]>

Especifica las propiedades del objeto que se van a mostrar. Permite el uso de caracteres comodin. Es opcional. Los parametros «property» y «view» no pueden utilizarse en el mismo comando.

-autosize <SwitchParameter>

Ajusta el tamaño de columna y el numero de columnas en funcion del ancho de los datos. De forma predeterminada, el tamaño y el numero de columnas viene determinado por la vista. Los parametros «autosize» y «column» no pueden usarse en el mismo comando.

-column <int>

Especifica el numero de columnas de la presentacion.

-groupby <object>

Da formato a la salida de los grupos en funcion de un valor o de una propiedad compartida. Indicar una expresion o una propiedad de la salida.

-inputobject <psobject>

Especifica los objetos a los que se les va a dar formato. Tenemos que indicar la variable que contiene los objetos o escribir un comando u objeto que obtenga los objetos.

Para obtener mas informacion sobre estos y otros parametros del cmdlet «format-wide«, escribid el comando:

>get-help -detailed format-wide

Ejemplo 1:

>get-childitem

>get-childitem | format-wide

Vemos la diferencia a poco que nos fijemos…

Ejemplo 2:

>get-childitem | format-wide -column 3

En este caso le indicamos que la salida la formatee en 3 columnas. Se ve, ¿no?

Ejemplo 3:

>get-childitem -path c:\ -include «*.txt» -recurse | fw -property name -column 3

Este comando nos muestra en pantalla todos los ficheros del disco C con extension «txt«. La salida sera solo de los nombres de los ficheros y en 3 columnas.

Recordemos que fw es el alias de Format-Wide.

7.3- Format-Table (ft)

Aplica a la salida de un comando el formato de una tabla con las propiedades seleccionadas del objeto en cada columna.

Tambien se puede usar format-wide para agregar las propiedades calculadas a un objeto antes de mostrarlo. Para ello deberemos usar el parametro property para especificar una tabla hash. La tabla hash puede contener 2 claves: label y expression.

Parametros

-property <object[]>

Especifica las propiedades del objeto que se va a mostrar y el orden en el que van a aparecer. Se permite el uso de caracteres comodin.

-autosize <SwitchParameter>

Ajusta el tamaño de columna y el numero de columnas en funcion del ancho de los datos.

Otros parametros: hidetableheaders, groupby, wrap, view, force, inputobject, expand, displayerror, showerror.

Par obtener mas informacion sobre format-wide, escribiremos en la linea de comandos de Powershell: get-help -detailed format-table.

Ejemplo 1:

>get-childitem | format-table

En este caso podemos ver que la salida es la misma que si no hubiesemos utilizado format-wide.

Ejemplo 2:

>get-childitem -path c:\power -include «*.txt» -recurse | format-table -property name, length

Ahora si que vemos la diferencia ya que solo vemos las propiedades name y length.

Bueno, hasta aqui llega el articulo sobre el formateo de la salida en Windows Powershell. Disponemos de otro cmdlet relacionado con este tema: format-custom, pero de momento no lo vamos a comentar. Creo que con lo que hemos visto tenemos suficiente para practicar un poco con este asunto.

Venga, a pasarlo bien!!!

Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.
  • 6-. Get-childitem.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, formato, scripting, sistemas, windows powershell

1 abril, 2009 Por oscar 2 comentarios

Powershell – 6 – Get-childitem

6.1- Get-childitem

Ya comente (creo) en un articulo anterior sobre Powershell, que podiamos utilizar comandos del «cmd» como «dir«. Pues bien, si utilizamos «dir» en Powershell es gracias a que esta definido como alias del cmdlet «Get-childitem» que es el cmdlet que Powershell ha definido para estas funciones.

Entonces, como ya sabremos, Get-childitem muestra los elementos y elementos secundarios de una o varias ubicaciones especificadas. Una ubicacion puede ser una ubicacion del sistema de archivos, como un directorio o una ubicacion expuesta por un proveedor como un subarbol del registro o un almacen de certificados.

Sintaxis

Get-Childitem -parametro argumento1, argumento2 -parametro2 argumento1 …

Parametros

-Path <String[]>

Especifica una o mas rutas de ubicaciones. Se permite el uso de caracteres comodin. La ubicacion predeterminada es el directorio actual (.). Este parametro es opcional.

-include <String[]>

Recupera unicamente los elementos especificados. Escribir en este apartado un patron como «*.exe».

-exclude <String[]>

Omite los elementos especificados. Escribiremos tambien un patron.

-name <Switchparameter>

Recupera unicamente los nombres de los elementos de la o las ubicaciones.

-recurse <Switchparameter>

Obtiene los elementos y elementos secundarios de las ubicaciones especificadas. Este parametro es muy util.

Tenemos disponibles algun que otro parametro mas para utilizar con Get-Childitem. Si quieres profundizar mas en ello, consulta la ayuda que ofrece Powershell sobre este cmdlet: get-help -detailed get-childitem.

6.2- Ejemplos.

Ejemplo 1:

>get-childitem

Nos muestra un listado de la ubicacion actual. Muestra todos los elementos que haya en ella.

Ejemplo 2:

>get-childitem -recurse

Este comando recupera los elementos del directorio actual y de sus subdirectorios. Podemos definir mejor el listado utilizando un patron.

Ejemplo 3:

>get-childitem -include «*.txt» -recurse

Igual que el ejemplo anterior, pero solo mostrara los ficheros con extension «txt».

Ejemplo 4:

>get-childitem -path c:\windows -include *.txt -recurse

Este comando es mas completo que los ateriores. Nos muestra un listado de los ficheros con extension «txt» que hay en el directorio «c:\windows» y en sus subdirectorios.

Ejemplo 5:

>get-childitem -path c:\, d:\ -include «*.txt» -recurse > c:\power\listado.txt

El proceso tarda un rato, ya que tiene que pasar por todo el disco C y el D.

A continuacion podeis ver un fragmento del fichero que ha generado.

Este hace un listado de los ficheros con extension «txt» que hay en los discos C y D y nos crea un fichero «listado.txt» con este contenido.

6.3- Alias de Get-Childitem

Get-childitem tiene tres alias definidos en Powershell, que son:

  • gci
  • ls
  • dir

Podeis probarlos de la misma forma que get-childitem.

Bueno, espero que hasta ahora se entienda la mayor parte de lo que voy explicando. Ya se que no soy ningun fenomeno de hacer tutoriales y menos de la enseñanaza, pero el objetivo es ofrecer una base para que luego, cada uno, profundice lo que le apetezca.

Venga, lo dejamos por hoy.

A pasarlo bien!!

Otros articulos sobre Powershell:

  • 1-. Introduccion.
  • 2-. Empezando con Powershell 1.0.
  • 3-. Obtener ayuda.
  • 4-. Get-Command.
  • 5-. Tuberias y redireccion.

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, get-childitem, scripting, sistemas, windows powershell

22 diciembre, 2008 Por oscar Deja un comentario

Powershell para Vmware

Hace poco tiempo que he oído hablar de esto y todavía no estoy muy seguro de cómo funciona. Pero para no esperar a que yo lo descubra por mi cuenta, si alguno de vosotros está interesado en el tema y luego nos lo cuenta un poco, mejor que mejor.

Aquí pongo una serie de enlaces que pueden servir de ayuda para comprender algo sobre este asunto:

* http://blogs.vmware.com/vipowershell/

* vmhero.

* Techprosaic.

* Peetersonline.

* NTPRO.NL

Y aquí algún enlace de Powershell sin mas ni mas, nada de vmware:

* Windows Powershell.

* Scripting with powershell.

* Powershell básico en Windows ti Magazine – I.

* Powershell básico en Windows ti Magazine – II.

* Powershell básico en Windows ti Magazine – III.

Estoy seguro que hay muchos mas enlaces y sitios en los que se habla y explica sobre Powershell, pero para empezar a documentarse un poco sobre ello creo que nos vale, de todas formas, si encontrais algun sitio que merezca la pena, escribid un comentario para que lo podamos aprovechar todos.

Venga, espero que os sirva de algo.

A pasarlo bien!!

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

oscar
oscar

Programador WordPress freelance

Publicado en: vmware Etiquetado como: aprendeinformaticaconmigo, scripting, vmware, vmware esxi

Hazte con el tema Divi

Divi WordPress Theme
Libro windows server 2008

Libro certificación Windows Server 2016

Libro certificación Windows Server 2016

Libro Windows Server 2016

Libro Windows Sever 2016
Web Hosting

Últimos artículos

  • PHP función var_dump(): Mostrar el contenido de una variable
  • PHP función unset(): Eliminar variables
  • MySQL LIMIT: Limitar la canidad de filas en una consulta
  • PHP función isset(): Evaluar si una variable está definida
  • PHP función empty(): Comprobar si una variable está vacía
  • MySQL SELECT DISTINCT para encontrar registros con diferente valor en el mismo campo
  • Los mejores libros en español para aprender WordPress

Mis Webs

  • Aprende Informática Conmigo
  • Dinapyme
  • MUSIKP
  • Oscar Abad Folgueira

Proyectos

  • Basabe Baserria
  • Batukada Battuere
  • Bicicletas Sin Pedales
  • Bordalan
  • C.R. Pantano del Rumblar
  • Dinapyme
  • DiverBiblio
  • Egia Ingenieros
  • Hermanos Vivas construcciones
  • Ibartxi – Suministros de Gas y Soldadura
  • LANBASE
  • LS Fotografía
  • Luke and Phil
  • Masajes Mas Sana
  • MUSIKP
  • Oh! Yeah Dev
  • Oscar Abad Folgueira
  • Participación ciudadana Basauri
  • Restaurante Bideko
  • Taldesport
  • Vicente Choya
  • WooCommerce Knowledge2K
  • Inicio
  • Contenido Anterior

Copyright © 2023 · Oscar Abad Folgueira Y DINAPYME· Acceder