Get-ADObject: ошибка синтаксического анализа запроса Не поддерживается: -neq '?
С помощью: 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
Ответы
Если вы действительно просто ищете пользователей и компьютеры, используйте запрос, который говорит, что:
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
. У вас уже на руках относительно сложный запрос, я бы отрубил ненужные инверсии ...
Нет такой вещи, как -neq
. То, что вы ищете, -ne
читайте здесь:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1