Get-ADObject: ошибка синтаксического анализа запроса Не поддерживается: -neq '?

Aug 19 2020

С помощью: https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adobject?view=win10-ps

Как я могу получить результат, чтобы отображались только все активные пользователи и компьютеры AD:

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

Ошибка:

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

Ответы

1 Steven Aug 19 2020 at 13:52

Если вы действительно просто ищете пользователей и компьютеры, используйте запрос, который говорит, что:

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

Выдерживая уже упомянутую ошибку оператора, Get-ADObjectнельзя использовать двойные кавычки и использовать$true/$ложный внутри. Они будут расширяться и отображаться как истинные / ложные. Выполнение такой команды как Get-ADObject -Filter "Enabled -eq $true"возвращает ошибку:

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

Если вы запустите его с одинарными кавычками, он будет работать, но в моей среде он ничего не вернет, вероятно, потому, что «Enabled» не является свойством с возможностью запроса из более общих объектов, возвращаемых Get-ADObjectи в отличие от них Get-ADUser/Computer. Так что вам придется поиграть с цитированием и самим запросом.

Кроме того, зачем использовать что-то вроде, -not (isRecycled -eq $true)когда можно просто сказать isRecycled -eq $false. У вас уже на руках относительно сложный запрос, я бы отрубил ненужные инверсии ...

1 GrzegorzOchlik Aug 19 2020 at 13:40

Нет такой вещи, как -neq. То, что вы ищете, -neчитайте здесь:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1