Get-ADObject: Erreur d'analyse de la requête Non pris en charge: -neq '?
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
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-ADObject
ne 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-ADObject
et 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 ...
Il n'y a rien de tel que -neq
. Ce que vous recherchez, c'est -ne
Lire la suite ici:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1