
145963
17.09.2020, aktualisiert um 16:58:08 Uhr
Powershell Regulärer Ausdruck
Hallo Admin's,
das erste Bild ist mein Befehl mit dem ich nach den Computernamen in Bild 2 suchen will.
Bisher filtere ich ja nach Namen die ein "e" gefolgt von einer "1" im Namen haben.
Ich möchte aber dieses Muster durch einen Regex austauschen, der mir wie in Bild 2
entweder so ein Muster
1309-002
oder so ein Muster
E126-003
oder so ein Muster
lehrsaal-1
suchen kann. Ich weiß das man Zahlen mit "\d" sucht, und Wörter mit "\w".
Nur versteh ich den richtigen Aufbau nicht. Mein bisheriger Versuch sah so aus:
PS Y:\> Get-ADcomputer -Filter{(name -like "*\w*|*\d*") -and (operatingsystem -like 'Windows 7*')} -Properties * | sort name | Format-Table name,operatingsystem,DistinguishedName
Aber er findet da bei mir nichts. Hab ich zusätzliche Klammern vergessen, zusätzliche Trennzeichen um "\d" und "\w" zu trennen?
Jetzt hab ich folgendes versucht:
PS Y:\> Get-ADcomputer -Filter{(name -like "*[a-zA-Z][1-9]*") -and (operatingsystem -like 'Windows 7*')} -Properties * | sort name | Format-Table name,operatingsystem,DistinguishedName
Aber auch da kein Ergebnis.
Gruß fe-mi-fi
das erste Bild ist mein Befehl mit dem ich nach den Computernamen in Bild 2 suchen will.
Bisher filtere ich ja nach Namen die ein "e" gefolgt von einer "1" im Namen haben.
Ich möchte aber dieses Muster durch einen Regex austauschen, der mir wie in Bild 2
entweder so ein Muster
1309-002
oder so ein Muster
E126-003
oder so ein Muster
lehrsaal-1
suchen kann. Ich weiß das man Zahlen mit "\d" sucht, und Wörter mit "\w".
Nur versteh ich den richtigen Aufbau nicht. Mein bisheriger Versuch sah so aus:
PS Y:\> Get-ADcomputer -Filter{(name -like "*\w*|*\d*") -and (operatingsystem -like 'Windows 7*')} -Properties * | sort name | Format-Table name,operatingsystem,DistinguishedName
Aber er findet da bei mir nichts. Hab ich zusätzliche Klammern vergessen, zusätzliche Trennzeichen um "\d" und "\w" zu trennen?
Jetzt hab ich folgendes versucht:
PS Y:\> Get-ADcomputer -Filter{(name -like "*[a-zA-Z][1-9]*") -and (operatingsystem -like 'Windows 7*')} -Properties * | sort name | Format-Table name,operatingsystem,DistinguishedName
Aber auch da kein Ergebnis.
Gruß fe-mi-fi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 605415
Url: https://administrator.de/forum/powershell-regulaerer-ausdruck-605415.html
Ausgedruckt am: 22.04.2025 um 21:04 Uhr
2 Kommentare
Neuester Kommentar

Moinsens,
der -Like Operator unterstützt nur simple Wildcards keine Regular Expressions! Liest du hier nach:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Da der ActiveDirectory-Filter keinen -match Vergleichs-Operator besitzt der RegularExpressions-Vergleiche macht kannst du es einfach mit einem nachgeschalteten Where-Object abfackeln:
Noch ein Tipp, das -properties * solltest du besser immer nur auf die Properties einschränken die du wirklich benötigst sonst dauert das ganze länger weil die PS sonst sämtliche Eigenschaften jedes zutreffenden Objektes aus dem AD abfragen muss.
G. eagle
der -Like Operator unterstützt nur simple Wildcards keine Regular Expressions! Liest du hier nach:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Da der ActiveDirectory-Filter keinen -match Vergleichs-Operator besitzt der RegularExpressions-Vergleiche macht kannst du es einfach mit einem nachgeschalteten Where-Object abfackeln:
Get-ADcomputer -Filter {operatingsystem -like 'Windows 7*'} -Properties * | ?{$_.Name -match '^(\d{4}-\d{3}|E\d{3}-\d{3}|\w+-\d+)$'} | sort name | Format-Table name,operatingsystem,DistinguishedName
G. eagle