DSGET escapa os sinais de hash (#) nos Nomes Distintos (DN) s emitidos, mas espera sinais de hash sem escape para entrada

4

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?

    
por Justin Dearing 06.05.2011 / 19:11

0 respostas