Fundamentos de PowerShell -Contains, -CContains & -NotContains Operadores condicionales

Windows PowerShell -Contains

Cuando se trata de filtrar, o encontrar datos tenemos mucho donde elegir con -Match, -Like y -Contains. Si bien hay un solapamiento, cada operador condicional tiene un papel distintivo en las secuencias de comandos de PowerShell.

Contains es mejor para buscar un valor exacto. Si quiero que un comando devuelva Verdadero o Falso, empiezo con -Contains, mientras que, si quiero una lista de resultados, entonces pruebo con -Match o -Like.

Temas para el operador condicional -Contains de PowerShell

  • Ejemplo 1: PowerShell -Contains (Basic)
  • Ejemplo 2: Buscar un valor en una colección
  • Ejemplo 3: PowerShell -Contiene hoja de cálculo
  • Ejemplo 4: PowerShell -CContains
  • Ejemplo 5: PowerShell -NotContains
  • PowerShell -Match
  • PowerShell -Like

Ejemplo 1a: PowerShell -Contains

PowerShell utiliza sustantivos singulares; por tanto, «contains» es un verbo, y no un sustantivo plural. Una característica de -Contains es que suele devolver «True» o «False». Si busca un comando que devuelva una lista de valores, entonces emplee -Match o -Like.

# PowerShell -Contains OperatorClear-Host$ArraySimple =@("House","Flat","Bungalow")$ArraySimple -Contains "Flat"# Result PS> True

Ejemplo 1b: -Contains de PowerShell es muy estricto

Contains puede ser frustrante porque es muy exigente. Después de un tiempo te das cuenta de que es sólo una característica de diseño, si no te gusta, prueba con -Match.

# PowerShell -Contains OperatorClear-Host$ArraySimple =@("House","Flats","Bungalow")$ArraySimple -Contains "Flat"# Result PS> False

Nota 1: -Contains interpreta «Flats» y «Flat» como diferentes, por lo que devuelve False; no importa que Flat sea un subconjunto de Flats.

Desafío: Sustituye -Match por -Contains.

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: Buscar un valor en una colección

Contains sería mi elección de operadores condicionales para situaciones en las que quisiera probar un elemento concreto en una colección, array o un hashtable.

# PowerShell -Contains$Collection = "Peter Smith", "Paula Harris", "Joan Evans"$Collection -Contains "Paula"# Result PS> False

Nota 2: Si se codifica: $Collection -Contains «Paula Harris»
El resultado sería: True. Necesita una coincidencia exacta del elemento completo.

Ejemplo 3: PowerShell -Contains Spreadsheet

Supongamos que deseamos buscar en un archivo llamado links.csv. Además, podemos utilizar Import-Csv para leer los datos y así poder probar los valores con -Contains.

Preparación
Mi hoja de cálculo se llama links.csv
He almacenado el archivo en D:\NPowerShell
El nombre de la columna es «Custom channel»
Vea la captura de pantalla a la derecha.

Guy Recomienda: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) le ayudará a descubrir lo que ocurre en su red. Esta utilidad también le guiará en la resolución de problemas; el tablero 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 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 Download 30-day FREE Trial

Ejemplo 4: PowerShell -CContains

Al igual que con los otros operadores condicionales de PowerShell, puede forzarlos a distinguir entre mayúsculas y minúsculas precediendo el comando con una ‘C’; ¡Contains no es un error tipográfico!

Nota 4: La cuestión es que en la hoja de cálculo el valor es claramente ‘LinkTop’, cuando forzamos la sensibilidad a mayúsculas y minúsculas con CContains, esto no es lo mismo que ‘linktop’, de ahí un resultado Falso.

Ejemplo 5: PowerShell -NotContains

El negativo -NotContains no es tan útil como -NotMatch. Sin embargo, por lo que ya hemos aprendido la sintaxis es predecible.

Nota 5: Recuerda que con -Contains, y por extensión -NotContains, la coincidencia tiene que ser exacta. No existe un ‘Custom channel’ con el nombre de precisamente ‘link’.

Vea más sobre las comparaciones -Like de PowerShell»

Guy Recomienda: SolarWinds Engineer’s Toolset (PRUEBA GRATUITA)

Este Engineer’s Toolset proporciona una completa consola de 50 utilidades para solucionar problemas informáticos. Guy dice que me ayuda a supervisar lo que ocurre en la red, y cada herramienta me enseña más sobre el funcionamiento del sistema subyacente.

Hay tantos aparatos buenos; es como tener rienda suelta a una tienda de golosinas. Afortunadamente, las utilidades se muestran de forma lógica: monitorización, descubrimiento de redes, diagnóstico y herramientas de Cisco. Pruebe ahora el SolarWinds Engineer’s Toolset en una prueba gratuita de 14 días.

About_Operators

# For even more information about PowerShell Operators try:Get-Help about_Operators

Aquí está la lista de los tipos de operadores de PowerShell

Vea también los operadores de PowerShell.Match»

Resumen del operador condicional -Contains de PowerShell

Cuando buscas un valor exacto, entonces -Contains sería mi primera opción de operador condicional. -Match o -Like son más adecuados para escenarios en los que sólo necesitas una coincidencia parcial, o necesitas una lista de elementos.

Vea más ejemplos de control de flujo de Windows PowerShell

– Inicio de PowerShell – Declaración If de PowerShell – ElseIf de PowerShell – Analizador de permisos gratuito

– Operadores condicionales – PowerShell -Match – PowerShell -Like – PowerShell -Contains

– Operadores de comparación de PowerShell – Sintaxis de PowerShell – Filtro Where – PowerShell Else

Por favor, envíeme un correo electrónico si tiene 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *