web-dev-qa-db-fra.com

Utilisation de "-Filter" avec une variable dans PowerShell

J'essaie de filtrer quelque chose comme ceci:

Get-ADComputer -Filter {name -like "chalmw-dm*" -and Enabled -eq "true"} ...

Cela fonctionne comme un charme et obtient exactement ce que je veux ...

Maintenant, je veux la partie "name-like ..." comme une variable comme ceci:

Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"} |

J'ai vérifié plusieurs questions (par exemple, Module PowerShell AD - Variables dans le filtre), mais cela ne fonctionne pas pour moi.

Je l'ai essayé avec ce qui suit:

$nameRegex = "chalmw-dm*"
$nameRegex = "`"chalmw-dm*`""

Et aussi dans la commande Get-ADComputer avec ceux ' et sans.

Quelqu'un pourrait-il me donner des indices?

5
Michael

Vous n'avez pas besoin de guillemets autour de la variable, alors changez simplement ceci:

Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"}

dans ceci:

Get-ADComputer -Filter {name -like $nameregex -and Enabled -eq "true"}

Notez cependant que la notation de bloc de script pour les instructions de filtrage est trompeuse, car il s'agit en fait d'une chaîne, il est donc préférable de l'écrire en tant que tel:

Get-ADComputer -Filter "name -like '$nameregex' -and Enabled -eq 'true'"

En relation . Aussi lié .

Et FTR: vous utilisez ici une correspondance générique (opérateur -like), et non des expressions régulières (opérateur -match). 

5
Ansgar Wiechers

Ajouter un double devis

$nameRegex = "chalmw-dm*"

-like "$nameregex" ou -like "'$nameregex'"

1
walid toumi

Ou

-like '*'+$nameregex+'*'

si vous souhaitez utiliser des caractères génériques.

0
user5248098