Introducción a los ejemplos de -Like y -NotLike de PowerShell
En esta página explicaré cómo filtrar datos con el comparador -Like de PowerShell.
Un día quise crear un script WMI usando el adaptador de red, pero ni siquiera usando PowerShell pude encontrar las propiedades adecuadas, así que volví a lo básico y listé todos los cmdlets que contenían ‘Adapter’.
Temas para el operador -Like de PowerShell
- Diferencias entre -Like y -Match
- Ejemplo 1: Comparador -Like de PowerShell
- Ejemplo 2: Comodines dobles -Match *Adapter*
- Ejemplo 3: El comparador -Match en lugar de -Like
- Ejemplo 4: PowerShell -NotLike
Diferencias entre -Like y -Match
En pocas palabras, si estás pensando, ‘probablemente voy a necesitar un comodín para encontrar este elemento’, entonces empieza con -Like. Sin embargo, si está bastante seguro de la mayoría de las letras de la palabra que está buscando, entonces es mejor que experimente con -Match.
Aquí hay una distinción más técnica: -Match es una expresión regular, mientras que -Like es sólo una comparación de comodines, un subconjunto de -Match.
Ejemplo 1: Comparador -Like de PowerShell
Este ejemplo sólo enumera los cmdlets que terminan con las letras ‘adapter’.
# PowerShell -Like Operator# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Like "*Adapter"}
Puntos de aprendizaje
Nota 1: Observa cómo Get-WmiObject utiliza el parámetro -List.
Nota 2: La mayoría de los scripts del comparador se introducen con Where-Object, seguido de la construcción de la tubería: $_.
Guy Recomienda: Free WMI Monitor for PowerShell (FREE TOOL)
Windows Management Instrumentation (WMI) es uno de los tesoros ocultos de los sistemas operativos de Microsoft. Afortunadamente, SolarWinds ha creado un Monitor WMI gratuito para PowerShell para que pueda descubrir estas joyas de información sobre el rendimiento, y así mejorar sus scripts de PowerShell.
Acabe con las conjeturas sobre los contadores WMI que debe utilizar al crear scripts del sistema operativo, Active Directory o Exchange Server. Pruebe este monitor WMI – es gratuito.
SolarWinds WMI Monitor Download 100% Free Tool
Ejemplo 2: Double Wildcards -Match *Adapter*
El problema del ejemplo 1 es que sospecho que hay más cmdlets que contienen la palabra Adapter, por ejemplo ‘adapter’ quizás en medio del nombre de la clase WMI.
# PowerShell example to demonstrate -Like# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Like "*Adapter*"}
Puntos de aprendizaje
Nota 3: Una vez más, date cuenta de la importancia de la construcción $_. Dólar, guión bajo. El punto significa ‘en este flujo de datos’.
Nota 4: Gracias al segundo *, el ejemplo 2 debería devolver más cmdlets.
Ver más ejemplos de PowerShell -Match.
Ejemplo 3: El comparador -Match en lugar de -Like
Me gusta ser flexible con los comparadores de PowerShell, si los resultados no son los que esperaba entonces puedo probar una alternativa como -Match o -Contains.
# PowerShell example to check with -Match# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Match "Adapter"}
Puntos de Aprendizaje
Nota 5: En realidad este ejemplo debería listar las mismas clases WMI que el Ejemplo 2, pero en otros scripts puedes obtener mejores resultados usando -Match en lugar de -Like.
Ver también -Match de PowerShell «
Guy Recomienda: Network Performance Monitor (FREE TRIAL)
SolarWinds Network Performance Monitor (NPM) le ayudará a descubrir lo que está sucediendo en su red. Esta utilidad también le guiará en la resolución de problemas; el panel de control le indicará si la causa raíz es un enlace roto, un equipo defectuoso o una sobrecarga de recursos.
Lo que más me gusta es la forma en que NPM sugiere soluciones a los problemas de la red. Su también tiene la capacidad de supervisar la salud de las máquinas virtuales VMware individuales. Si usted está interesado en la solución de problemas, y la creación de mapas de red, entonces le recomiendo que pruebe NPM en una prueba gratuita de 30 días.
SolarWinds Network Performance Monitor Descargar 30 días de prueba GRATIS
Ejemplo 4: Más comparadores -NotLike
Hora de recapitular: El comparador más simple es ‘igual’, y la forma de codificar esto en PowerShell con -eq (no =). Sin embargo, en estos ejemplos, -eq no sería efectivo, porque siendo realistas tendrías que saber la respuesta antes de poder hacer la pregunta!
Me gustaría aprovechar esta oportunidad para examinar otros comparadores. Es sorprendente la frecuencia con la que el operador negativo -NotLike produce una solución ordenada a un problema de scripting. Por ejemplo, hay varios WmiObjects que empiezan por CIM, una forma de excluirlos sería No Como «CIM*».
Además, utilizando múltiples criterios en el filtro, se puede afinar la salida, para lograr mi objetivo he añadido ‘-And’. Si por alguna razón -And falla recuerda esto, al añadir un segundo comparador el secreto es añadir otra instancia del comparador ($_.name) después de -And.
# PowerShell example to list demonstrate -NotLike with -And# Author: Guy Thomas# Version September tested on PowerShell v 2Clear-Host$WMI = Get-WmiObject -List `| where-Object {$_.name -NotLike "CIM*" -And $_.name -NotLike "__*"}$WMIWrite-Host `n $WMI.count "WMI objects not contain CIM or __"
Puntos de aprendizaje
Nota 6: Mi misión es siempre la de ponerte en marcha. Ahora te toca a ti; experimenta con diferentes filtros, sustituye tus ideas por «CIM», y «__». Quizás lo mejor de todo sería combinar -NotLike y -Like.
Nota 7: He adjuntado código para contar el número de clases WMI, esto ayuda a ver qué variación de mi script devuelve más elementos.
Seguimiento
Como siempre con mis scripts, la misión es que empieces. Si quieres saber más sobre -Match, -Like y sus parientes, entonces empieza con la propia ayuda de PowerShell así:
Get-Help about_comparison_operators. (O intente Get-Help about*)
Estos archivos de ayuda introducen todo un mundo de términos específicos, por ejemplo, ‘comparaciones de expresiones regulares’ y ‘comparación de comodines’. Una vez que necesites y entiendas esa información extra, entonces habré tenido éxito en mi misión de introducirte en -Match y -Like.
Ver más sobre los Operadores de Comparación de PowerShell»
«
Resumen del Operador -Like de PowerShell
A menudo sufrimos de sobrecarga de información. Trabajar con PowerShell no es diferente, sin embargo suministra tres operadores condicionales para filtrar su información: -Match, -Like y -Contains. Cada operador tiene diferentes propiedades; con la investigación, puedes obtener justo el filtro que necesitas, y así filtrar el flujo de información deseado en la salida de tu script.
Si te gusta esta página entonces por favor compártela con tus amigos
Ve más ejemplos de control de flujo de Windows PowerShell
– Declaración de conmutación de PowerShell – Técnicas de la vida real de PowerShell – Analizador de permisos gratuito
– Diferencias entre For, ForEach y ForEach-Object – Bucles de PowerShell – Inicio de PowerShell
– Operadores condicionales – Bucle Do While – Declaración If de PowerShell – Paréntesis de PowerShell
Por favor, envíame un correo electrónico si tienes un mejor script de ejemplo. También por favor informe de cualquier error de hecho, errores gramaticales o enlaces rotos, estaré encantado de corregir el fallo.
0 comentarios