PowerShell cmdlet Get-ADObject e contesto di ricerca

Durante la mia sessione al SysAdmin.it  Community Tour dello scorso 15 gennaio si è verificato un piccolo intoppo durante l’esecuzione del cmdlet per il ripristino dell’account cancellato nella demo del Recycle Bin di Active Directory.

In particolare mi riferisco al seguente:
Get-ADObject -Filter {displayName -eq “Mario Rossi”} -IncludeDeletedObjects | Restore-ADObject 

Il motivo per cui non ha funzionato era che il cmdlet Get-ADObject falliva la ricerca dell’account e la causa era dovuta al fatto che ho eseguito il comando in una shell di PowerShel che avevo utilizzato per la demo del provider PowerShell per Acitive Directory.

In questa shell avevo eseguo i seguenti i seguenti comandi:

get-psdrive
CD AD:
dir
CD ”DC=test,DC=local”
dir
CD “OU=Roma”
dir 
get-item “CN=Mario Rossi” | select *

e quindi il contesto era posizionato nella OU Roma e in tale contesto operava il cmdlet Get-ADObject come riporta la documentazione:

“When you run a cmdlet from an Active Directory provider drive, the default value of this parameter is the current path of the drive”

Questo era il motivo per cui non era possibile trovare l’oggetto dal momento che si trovata in “CN=DeletedObjects,DC=Contoso,DC=com” e non nel path “OU=Roma,DC=test,DC=local” o in un contenitore sottostante a quest’ultimo.

E’ comunque possibile utilizzare il parametro –SearchBase per modificare il path di ricerca e il parametro SearchScope per indicare che la ricerca deve essere eseguita anche nei contenitori sottostanti, nel mio caso avrebbe potuto essere:

Get-ADObject –SearchBase “DC=test,DC=local” –SearchScope Subtree -Filter {displayName -eq “Mario Rossi”} -IncludeDeletedObjects | Restore-ADObject

L’alternativa che ho seguito io è stata quella di aprire una nuova shell in questo come riporta la documentazione il SearchBase diventa il dominio:

“When you run a cmdlet outside of an Active Directory provider drive against an AD DS target, the default value of this parameter is the default naming context of the target domain.”

E come va di moda dire oggi “tanto vi dovevo per opportuna conoscenza”.