Cómo utilizar PowerShell String Contiene

El operador Contiene en PowerShell es un poco extraño.

Probablemente desee verificar si una cadena contiene una palabra o un carácter en particular. los -contains El operador suena como el más lógico de usar, pero ¿lo es?

En PowerShell, el operador contiene no realiza la comparación de subcadenas. Pero en cambio, es un operador de colección.

Esto significa que probará si una colección contiene el valor coincidente. No se puede usar para buscar un carácter o una subcadena dentro de una cadena.

Una mejor solución para esto es usar el -like operador o el .contains() función

En este artículo, explicaré cómo puede verificar si una cadena contiene un carácter y explicaré las diferencias entre los diferentes operadores.

La cadena de PowerShell contiene

Cuando desea probar si una cadena contiene una palabra, probablemente intentó usar el -contains operador así:

$string = "how to find a word"

if ($string -contains "find") { 
  # Do something
}

# Result
False

Pero esto no funcionará como habrás notado. Esto es porque -contains verificará si el objeto $string coincide con el elemento de prueba. Si lo prueba en la cadena completa, contains devolverá verdadero:

$string -contains "how to find a word"  # True

Entonces, cuando desee buscar una subcadena o una palabra dentro de una cadena con PowerShell, es mejor usar el -like operador. Con -like necesitarás usar comodines alrededor de tu cadena de búsqueda:

if ($string -like "*find*") { 
  Write-host "String contains find"
}

# Result
String contains find

Sin embargo, hay una manera de usar contiene en PowerShell para encontrar una palabra o un carácter dentro de una cadena.

En lugar del operador, podemos usar la función .NET incorporada .Contains() para cuerdas Esta función de cadena puede verificar si la cadena contiene una palabra:

if ($string.Contains("find")) { 
  Write-host "String contains find"
}

# Result
String contains find

Tenga en cuenta que la función Contiene distingue entre mayúsculas y minúsculas, por lo que para hacer una comparación sin distinción entre mayúsculas y minúsculas, primero deberá convertir la cadena a minúsculas:

if ($string.ToLower().Contains("find")) { 
  Write-host "String contains find"
}

Uso de -Contains y -Notcontains en objetos y matrices

El operador contiene está destinado a probar si un objeto o matriz contiene el valor dado.

Entonces, por ejemplo, si tenemos una matriz con frutas, podemos verificar si la matriz contiene una pera:

# Array with fruits
$fruits = "apple","banana","pear"

# Check if the array contains pear
$fruits -contains "pear"

# Return
True

Solo podemos buscar en los valores completos, esto significa que no podemos usar comodines como con el operador Me gusta.

Si intentamos buscar solo en las primeras letras de apple, verá que devuelve falso:

$fruits -contains "*app*"
# Result
False

Si desea verificar si un conjunto no contiene un elemento, puede usar el -notcontains operador.

Entonces, por ejemplo, si desea asegurarse de que la matriz de frutas no contenga frambuesa, podemos hacer lo siguiente:

$fruits -notcontains "raspberry"

# Returns
True

Operadores -in y -notin

los -in y -notin Los operadores en PowerShell son básicamente los mismos que los -contains y -notcontains operadores.

La diferencia es que simplemente funcionan al revés. Con -contiene el objeto de prueba está en el lado derecho del operador. Con -inestá en el lado izquierdo:

$fruits = "apple","banana","pear"

"apple" -in $fruits			# True
"raspberry -notin $fruits		# True

# Similar to
$fruits -contains "apple"		# True
$fruits -notcontains "raspberry         # True

El uso del operador in en lugar de contiene puede mejorar la legibilidad de su código.

Pero además de eso, no hay ninguna ventaja en usarlo en comparación con contener.

Terminando

Si desea saber en PowerShell si una cadena contiene una cadena o palabra en particular, deberá usar el -like operador o el .contains() función.

El operador contiene solo se puede usar en objetos o matrices al igual que su contraparte sintáctica -in y -notin.

Espero que este artículo haya ayudado a comprender las diferencias entre los diferentes operadores y funciones.

Si tiene alguna pregunta o sugerencia, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo usar Export-CSV en PowerShell

Cómo usar Export-CSV en PowerShell

Con PowerShell, puede extraer todo tipo de información de servicios como Active Directory o Microsoft 365. Pero a veces necesita ...
Leer Más
GUI de PowerShell - Cómo empezar

GUI de PowerShell – Cómo empezar

He creado muchos scripts de PowerShell durante los últimos años. Todo con un solo propósito para automatizar mi trabajo de ...
Leer Más
Guía y scripts de desinstalación, reinstalación y limpieza de Microsoft Teams

Guía y scripts de desinstalación, reinstalación y limpieza de Microsoft Teams

Microsoft Teams no es como un programa promedio cuando se trata de instalarlo y desinstalarlo. El problema con Microsoft Teams ...
Leer Más
Cómo verificar su versión de PowerShell

Cómo verificar su versión de PowerShell

¿Está usando la versión 5.1 o ya cambió a la versión 7 de PowerShell? La versión de PowerShell que haya ...
Leer Más
Cómo utilizar PowerShell String Contiene

Cómo utilizar PowerShell String Contiene

El operador Contiene en PowerShell es un poco extraño. Probablemente desee verificar si una cadena contiene una palabra o un ...
Leer Más
Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

¿Necesita exportar todas las computadoras desde una unidad organizativa o buscar una computadora en su Active Directory? ¿O quieres contar ...
Leer Más

Deja un comentario