Haikos Blog Blog von Haiko Hertes zu allen Themen rund um Microsoft und Datacenter

13Sep/180

PowerShell – Where-Object – Wildcards und -in kombinieren

Manchmal hat man den Bedarf, eine Objektliste gegen eine Liste von Ausdrücken zu filtern und dabei Wildcards zu verwenden, z.B. in dieser Form

[Alle Tiere - "Eisvogel","Hauspferd","Lisztaffe","Bergziege"] | Where-Object Name -in "*affe","*vogel"

Where-Object kann dabei ENTWEDER mit -in eine Liste verwenden ODER mit * Wildcards verwenden - beides zusammen geht (erstmal) nicht. Aber es gibt eine Lösung: Man muss die Liste der Wildcards zuerst expandieren, um die realen Werte dort drauf stehen zu haben. Das kann man z.B. so machen (am Beispiel von Verteilern):

1
2
3
4
5
6
$items = Get-DistributionGroup # Die Objektliste
$search = @("*Finanzen*","*Einkauf*","*IT*") # Die Wildcard-Ausdrücke, nach denen gesucht wird
$result = $search |
    Select-Object @{ Name="ExpandedItem"; Expression={ $items -Like $_ }} |
    Select-Object -ExpandProperty ExpandedItem -Unique
$result

ich hoffe, das hilft dem Einen oder Anderen...