DSGET在输出的可分辨名称(DN)中转义散列符号(#),但是希望input未转义的散列符号

假设我想在AD中做非常简单的查询

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

这将输出该用户所属的AD组的DN。 我可以通过以下方式打印友好的组名:

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

但是,如果一个组中有一个哈希标记(例如“CN =#Kentucky Office,OU =#分发列表,DC = myenterprise,DC =本地” )将失败,并显示以下错误:

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

解决这个问题的方法就是避开哈希(即“CN =#Kentucky Office,OU =#Distribution Lists,DC = myenterprise,DC = local” )。 我可以通过oneliner在PowerShell中做到这一点:

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

有没有一个解决scheme,不涉及powershell.exe,甚至添加一个可执行文件,除了dsquery或dsgetpipe道?