Solución:
los -Contains
El operador no hace comparaciones de subcadenas y la coincidencia debe estar en una cadena completa y se usa para buscar colecciones.
De la documentación a la que vinculó:
-Contiene Descripción: Operador de contención. Indica si una colección de valores de referencia incluye un único valor de prueba.
En el ejemplo que proporcionó, está trabajando con una colección que contiene solo un elemento de cadena.
Si lee la documentación a la que vinculó, verá un ejemplo que demuestra este comportamiento:
Ejemplos:
PS C:> "abc", "def" -Contains "def"
True
PS C:> "Windows", "PowerShell" -Contains "Shell"
False #Not an exact match
Creo que lo que quieres es el -Match
operador:
"12-18" -Match "-"
Que vuelve True
.
Importante: Como se señala en los comentarios y en la documentación vinculada, cabe señalar que el -Match
El operador usa expresiones regulares para realizar coincidencias de texto.
-Contains
es en realidad un operador de cobranza. Es cierto si la colección contiene el objeto. No se limita a cadenas.
-match
y -imatch
son comparadores de cadenas de expresiones regulares y establecen variables automáticas para usar con capturas.
-like
, -ilike
son comparadores similares a SQL.
Puedes usar like
:
"12-18" -like "*-*"
O split
por contains
:
"12-18" -split "" -contains "-"