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?