Назад | Перейти на главную страницу

DSGET избегает знаков решетки (#) в выведенных отличительных именах (DN), но ожидает ввода неэкранированных знаков хеша

Допустим, я хочу сделать очень простой запрос в AD

dsquery user -name "John Smith" | dsget user -memberof -expand

Это выведет DN групп AD, к которым принадлежит этот пользователь. Я могу заставить его распечатать дружественное имя группы через:

dsquery user -name "John Smith" | dsget user -memberof -expand | dsget group -samid

Однако, если в группе есть хэш-тег (например, "CN = # Офис в Кентукки, OU = # Списки рассылки, DC = myenterprise, DC = local") выйдет из строя со следующей ошибкой:

dsget failed:Value for 'Target object for this command' has incorrect format.

Способ исправить это - отменить экранирование хэшей (т.е. "CN = # Офис в Кентукки, OU = # Списки рассылки, DC = myenterprise, DC = local"). Я могу сделать это в PowerShell через oneliner:

dsquery user -name "John Smith" | dsget user -memberof -expand | ForEach-Object { $_.Replace('\#', '#')  } | dsget group -samid

Есть ли решение, которое не включает powershell.exe или даже не добавляет исполняемый файл в канал, кроме dsquery или dsget?