Quando eu faço ($env:path).split(";")
, há muitos elementos contendo a string bin
. Eu quero ter uma lista deles. Eu tento:
($env:path).split(";") | Where-Object {$_ -contains "bin" }
Mas não há resultado. Se eu mudar o operador para -notcontains
, ele lista todos os caminhos, independentemente de conter a string ou não. Como fazer isso funcionar?
Você está usando o operador de comparação errado.
-contains
verifica se uma coleção (matriz\lista\etc) contém um elemento específico.@('Z', 'A', 'Q', 'M') -contains 'A'
retorna$true
Mas você está trabalhando com as strings únicas da matriz: portanto, você precisa usar
-like
(para correspondência de curinga simples) ou-match
(para correspondência de expressão regular)então
($env:path).split(';') | Where-Object { $_ -match 'bin' }
Também, de uma forma mais powershell-y
$env:path -split ';' | Where-Object { $_ -match 'bin' }
EDIT : e isso é para ir ainda mais além!
$env:path -split ';' -Match 'bin'
(obrigado @iRon)(observe que fiz a correspondência o mais simples possível como exemplo, você precisará testar se funciona corretamente para suas necessidades)
Mais sobre operadores de comparação