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=#Kentucky Office,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?

0 ответов

Другие вопросы по тегам