Get-ADObject: errore di analisi della query Non supportato: -neq '?
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
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-ADObject
non è 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-ADObject
e 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 ...
Non esiste una cosa come -neq
. Quello che stai cercando è -ne
Leggi di più qui:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1