Get-ADObject: Erreur d'analyse de la requête Non pris en charge: -neq '?

Aug 19 2020

En utilisant: https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adobject?view=win10-ps

Comment puis-je obtenir le résultat afin qu'il n'affiche que tous les utilisateurs et ordinateurs AD actifs uniquement:

Get-ADObject -Filter 'Enabled -eq $True -and isDeleted -neq $True -and -not (isRecycled -eq $True) -and name -ne "Deleted Objects"'

Erreur:

Get-ADObject : Error parsing query: 'Enabled -eq $True -and isDeleted -neq $True -and -not (isRecycled -eq $True) -and name -ne "Deleted Objects"' Error Message: 'Operator Not supported: -neq' at position:
'34'. At line:1 char:1
+ Get-ADObject -Filter 'Enabled -eq $True -and isDeleted -neq $True -an ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Get-ADObject], ADFilterParsingException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADObject

Réponses

1 Steven Aug 19 2020 at 13:52

Si vous recherchez simplement des utilisateurs et des ordinateurs, utilisez une requête qui dit que:

Get-ADObject -Filter 'ObjectClass -eq "user" -or ObjectClass -eq "computer"'

Malgré l'erreur d'opérateur déjà mentionnée, Get-ADObjectne peut pas double citer et utiliser$true/$faux à l'intérieur. Ceux-ci vont s'étendre et devenir simplement vrai / faux. L'exécution d'une commande comme Get-ADObject -Filter "Enabled -eq $true"renvoie une erreur:

Get-ADObject : Error parsing query: 'Enabled -eq True' Error Message: 'syntax error' at position: '13'.

Si vous l'exécutez avec des guillemets simples, il fonctionnera mais dans mon environnement, il ne renvoie rien, probablement parce que "Enabled" n'est pas une propriété interrogeable des objets plus génériques renvoyés par Get-ADObjectet contrairement Get-ADUser/Computer. Vous devrez donc jouer avec les citations et la requête elle-même.

Un aparté pourquoi utiliser quelque chose comme -not (isRecycled -eq $true)quand vous pouvez simplement dire isRecycled -eq $false. Vous avez déjà une requête relativement complexe sur vos mains, je couperais les inversions inutiles ...

1 GrzegorzOchlik Aug 19 2020 at 13:40

Il n'y a rien de tel que -neq. Ce que vous recherchez, c'est -neLire la suite ici:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1