Wie kann ich die AD-Attribute erhalten, die Kleinbuchstaben enthalten, wie: Wa, Co, ny, la

Verwenden von:

Get-ADUser -Properties State -Filter { (Enabled -eq $true) -and (State -cmatch '^[a-z]') } | Select SamAccountName, State | Out-GridView

Der Fehler ist:

Get-ADUser : Error parsing query: ' (Enabled -eq $true) -and (State -cmatch '^[a-z]') ' Error Message: 'Operator Not supported: -cmatch' at position: 
'34'.
At line:1 char:1
+ Get-ADUser -Properties State -Filter { (Enabled -eq $true) -and (Stat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Managemen 
   t.Commands.GetADUser
0
Senior Systems Engineer 17 Aug. 2020 im 07:51

2 Antworten

Beste Antwort

Zusätzlich zu der hilfreichen Antwort von Doug Maurer können Sie in einem nicht die Vergleichsoperatoren -match oder -cmatch verwenden Filter. Außerdem sollte ein Filter eigentlich eine Zeichenfolge sein, kein Skriptblock ({..}).

In Ihrem Fall sollten Sie eine Where-Object -Klausel hinzufügen, um Regex verwenden zu können, nachdem Sie nach der Eigenschaft Enabled gefiltert haben:

Get-ADUser -Properties State -Filter "Enabled -eq 'True'" | 
    Where-Object { $_.State -cmatch '[a-z]' } |
    Select SamAccountName, State | Out-GridView
1
Theo 17 Aug. 2020 im 08:51

Der Fehler besagt eindeutig, dass der Operator -cmatch nicht unterstützt wird. Der Filter wird in diesem Fall vom AD-Anbieter verwaltet, sodass nicht alle Powershell-Operatoren unterstützt werden. Erkundigen Sie sich bei jedem PS-Anbieter. Hier ist eine Liste, die Sie verwenden können. https://adsecurity.org/?p=297

3
Doug Maurer 17 Aug. 2020 im 05:04