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?
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
).
Ajouter un double devis
$nameRegex = "chalmw-dm*"
-like "$nameregex"
ou -like "'$nameregex'"
Ou
-like '*'+$nameregex+'*'
si vous souhaitez utiliser des caractères génériques.