Get-ADObject: errore di analisi della query Non supportato: -neq '?

Aug 19 2020

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

Come posso ottenere il risultato in modo che mostri solo tutti gli utenti e i computer AD attivi:

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

Errore:

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

Risposte

1 Steven Aug 19 2020 at 13:52

Se stai cercando solo utenti e computer, utilizza una query che dice che:

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

Nonostante il già citato errore dell'operatore, Get-ADObjectnon è possibile utilizzare virgolette doppie$true/$falso dentro. Quelli si espandono e risultano semplicemente veri / falsi. L'esecuzione di un comando come Get-ADObject -Filter "Enabled -eq $true"restituisce un errore:

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

Se lo esegui con virgolette singole, verrà eseguito ma nel mio ambiente non restituisce nulla, probabilmente perché "Enabled" non è una proprietà in grado di eseguire query dagli oggetti più generici restituiti da Get-ADObjecte diversamente Get-ADUser/Computer. Quindi dovrai giocare con la citazione e la query stessa.

A parte perché usare qualcosa come -not (isRecycled -eq $true)quando puoi semplicemente dire isRecycled -eq $false. Hai già una query relativamente complessa tra le mani, taglierei le inversioni non necessarie ...

1 GrzegorzOchlik Aug 19 2020 at 13:40

Non esiste una cosa come -neq. Quello che stai cercando è -neLeggi di più qui:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1