145963
Sep 17, 2020, updated at 14:58:08 (UTC)
1011
2
0
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 605415
Url: https://administrator.de/contentid/605415
Printed on: April 25, 2024 at 05:04 o'clock
2 Comments
Latest comment
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