Digamos que eu queira fazer a consulta muito simples no AD
dsquery user -name "John Smith" | dsget user -memberof -expand
Isso produzirá os DNs dos grupos do AD aos quais esse usuário pertence. Eu posso imprimir o nome do grupo amigável via:
dsquery user -name "John Smith" | dsget user -memberof -expand | dsget group -samid
No entanto, se um grupo tiver uma hash tag (por exemplo, "CN = # Kentucky Office, OU = # Listas de Distribuição, DC = myenterprise, DC = local" ) falhará com o seguinte erro :
dsget failed:Value for 'Target object for this command' has incorrect format.
A maneira de corrigir isso é desabotoar os hashes (ou seja, "CN = # Office Kentucky, UO = # Listas de Distribuição, DC = minha_empresa, DC = local" ). Eu posso fazer isso no powershell através do oneliner:
dsquery user -name "John Smith" | dsget user -memberof -expand | ForEach-Object { $_.Replace('\#', '#') } | dsget group -samid
Existe uma solução que não envolva o powershell.exe ou até mesmo adicionar um executável ao pipe além de dsquery ou dsget?