webentwicklung-frage-antwort-db.com.de

Verwenden von "-Filter" mit einer Variablen in PowerShell

Ich versuche so etwas herauszufiltern:

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

Das funktioniert wie ein Zauber und bekommt genau das, was ich will ...

Jetzt möchte ich den "name-like ..." - Teil als Variable wie folgt:

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

Ich habe mehrere Fragen geprüft (z. B. PowerShell AD-Modul - Variablen in Filter), aber das funktioniert für mich nicht.

Ich habe es mit folgendem probiert:

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

Und auch im Get-ADComputer-Befehl mit denen ' und ohne.

Könnte mir jemand ein paar Hinweise geben?

5
Michael

Sie brauchen keine Anführungszeichen um die Variable.

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

das sehr gut finden:

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

Beachten Sie jedoch, dass die Skriptblocknotation für Filteranweisungen irreführend ist, da die Anweisung tatsächlich eine Zeichenfolge ist. Daher ist es besser, sie als solche zu schreiben:

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

Verbunden . Auch verwandt .

Und FTR: Sie verwenden hier Platzhalterabgleich (Operator -like), nicht reguläre Ausdrücke (Operator -match). 

5
Ansgar Wiechers

Fügen Sie doppelte Anführungszeichen hinzu

$nameRegex = "chalmw-dm*"

-like "$nameregex" oder -like "'$nameregex'"

1
walid toumi

Oder

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

wenn Sie Platzhalter verwenden möchten.

0
user5248098