Aprende Informatica Conmigo

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

9 mayo, 2009 Por oscar 1 comentario

Powershell – 14 – Where-Object

14.1- Where-Object

Crea un filtro que controla los objetos que se van a pasar con una canalizacion de comandos. Filtra los objetos que recibe, bien como entrada canalizada o a traves del parametro «-inputobject«. Determina que objetos se van a pasar a traves de la canalizacion mediante la evaluacion de un bloque de script que puede incluir una referencia a un objeto que se va a filtrar. Si el resultado de la ejecucion es True, el objeto que se va a procesar se pasa a traves de la canalizacion, en caso contrario, el objeto queda descartado.

Este cmdlet lo vamos a usar mucho, por lo tanto es bueno comprender su funcionamiento correctamente. Para ello, voy a dedicar especial atencion al apartado de ejemplos de este cmdlet para que quede lo mas claro posible.

Ademas, este cmdlet lo usaremos en ejemplos a partir e ahora con otros cmdlets.

14.2- Parametros

-filterscript <scriptblock>

Especifica el bloque de script que se va a evaluar, Para determinar que objetos de entrada se van a pasar a traves de la cananlizacion de comandos.

-inputobject <psobject>

Especifica los objetos que se van a filtrar.

Si guardamos el resultado de un comando en una variable, podemos utilizar «-inputobject» para pasar la variable a «where-object».

14.3- Ejemplos

Ejemplo 1

>get-command | where-object {$_.Name -like «get-*»}

pwswhere01

Aparentemente no tiene muy buena pinta y nos puede intentar desistir de seguir adelante viendo estos signos «raros» ¿no?

Pero no os preocupeis por que es bien sencillo y a medida que vayamos utilizando Powershell ya vereis que nos vamos a acomodar a este tipo de comandos.

El mayor problema que podemos encontrar al principio en este comando es: {$_.Name -like «get-*»}.

En primer lugar tengo que decir que el argumento de «where-object«, al ser una comparacion, ira entre llaves ({}).

Bien, el primer operando dentro de las llaves es: «$_.Name» que se refiere al conjunto de objetos recibidos a traves de la tuberia y en este caso a su propiedad «Name«. Es decir, que vamos a utilizar solo la propiedad «Name» de los objetos recibidos para la comparacion.

El segundo, es un operador de comparacion (como ya habreis intuido). Este en concreto (-like), lo que hace es comparar los objetos recibidos con el patron y nos mostrara todos los que coindidan con este. Cuando utilizamos «-like«, normalmente el patron tendra algun caracter comodin.

Y del tercer argumento ya hemos hablado, es el patron a buscar y no creo que sea necesario explicar nada sobre esto.

Ahora, si juntamos todo, tenemos que nos mostrara los comandos cuyo nombre comience por «get-«. Si teneis alguna duda sobre esto, me lo comentais.

Aunque los operadores de comparacion merecen un apartado proipo, voy a indicar a continuacion algunos de ellos para que podamos probarlos.

-eq igual

-ne no igual

-gt mayor que

-ge mayor o igual que

-lt menor que

-le menor o igual que

-like comparacion de caracteres comodin

-notlike lo contrario que el anterior.

-match Que coincida el segundo operando exactamente

-notmatch Lo contrario de «-match»

De todas formas, no estaria de mas que le deis una vuelta a este tema y para ello podeis utilizar el siguiente comando:

>get-help about_comparison_operators.

Ejemplo 2

>get-childitem | where-object {$_.Length -ge 10000}

pwswhere02

Como podemos observar, nos muestra los ficheros que tienen 10000 bytes o mas de los que hay en el directorio actual.

Ejemplo 3

Recordad que para conocer las diferentes propiedades que posee un objeto, podemos hacerlo mediante el cmdlet «get-member«. Este, ademas de las propiedades, nos puede mostrar otros elementos como metodos, funciones…

En el caso anterior, podriamos escribir:

>get-childitem | get-member

pwswhere03Pero esto nos devolvera la lista completa de elementos disponibles en el objeto en cuestion y nosotros queremos algo mas concreto.

Para obtener solamente la lista unicamente de las propiedades hacemos lo siguiente:

>get-childitem | get-member | where-object {$_.MemberType -match «Property»}

pwswhere04Todavia no hemos conseguido completamente nuestro objetivo. Ahora volvemos a probar, pero esta vez con el operador «-eq«:

>get-childitem | get-member | where-object {$_.MemberType -eq «Property»}

pwswhere06¡Ahora si! Ahora hemos conseguido el listado que andabamos buscando.

Ejemplo 4

Ahora, por lo que sea, queremos saber que servicios estan parados en el equipo local.

Bien, para esto escribimos el siguiente comando:

> get-service | where-object {$_.status -eq «stopped»}

pwswhere05Ya lo veis. Que facil ¿no?

Venga, pues hasta aqui llega este articulo.

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: formacion, powershell, sistemas, tutoriales Etiquetado como: aprendeinformaticaconmigo, powershell, scripts, sistemas, where-object

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