Get-ADObject: Erro ao analisar a consulta Sem suporte: -neq '?

Aug 19 2020

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

Como posso obter o resultado de forma que mostre apenas todos os usuários e computadores ativos do AD:

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

Erro:

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

Respostas

1 Steven Aug 19 2020 at 13:52

Se você estiver realmente apenas procurando por usuários e computadores, use uma consulta que diz que:

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

Suportando o erro do operador já mencionado, Get-ADObjectnão posso aspas duplas e usar$true/$falso por dentro. Eles se expandirão e se tornarão simplesmente verdadeiro / falso. Executar um comando como Get-ADObject -Filter "Enabled -eq $true"retorna um erro:

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

Se você executá-lo com aspas simples, ele será executado, mas no meu ambiente não retornará nada, provavelmente porque "Enabled" não é uma propriedade que pode ser consultada dos objetos mais genéricos retornados por Get-ADObjecte ao contrário Get-ADUser/Computer. Portanto, você terá que brincar com as citações e a própria consulta.

Um aparte porque usar algo como -not (isRecycled -eq $true)quando você pode apenas dizer isRecycled -eq $false. Você já tem uma consulta relativamente complexa em suas mãos, eu cortaria as inversões desnecessárias ...

1 GrzegorzOchlik Aug 19 2020 at 13:40

Não existe tal coisa como -neq. O que você está procurando é -neLeia mais aqui:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1