Escape具有特殊字符的ActiveDirectory属性

时间:2014-02-05 10:51:34

标签: powershell csv collections

我正在尝试查询AD以获取用户列表和特定变量,如下所示:

get-aduser -filter * -Properties * | select Samaccountname,vasco-LinkUserToDPToken | Export-Csv U:\test.csv -NoTypeInformation

然而,这将返回samaccountname和Microsoft.ActiveDirectory.Management.ADPropertyValueCollection。

在网上看到我已经确定这个属性是一个集合,我需要一些东西来扩展它并允许它导出为CSV:

get-aduser -filter * -Properties * | select @{name="vasco";expression={$_.vasco-LinkUserToDPToken -join}},samaccountname | Export-Csv U:\test.csv -NoTypeInformation

但是我一直收到以下错误:

 Unexpected token '-LinkUserToDPToken' in expression or statement.

我猜测powershell正在阅读“ - ”作为某种形式的运算符并逐渐消失。不幸的是,我无法找到解决方法。我明白`是逃脱角色,但我对它的直率使用并没有产生任何可用的结果。我希望有人能够帮助我朝着正确的方向前进。很可能是我疯狂的博客阅读导致我误解了哈希表的使用语法...

2 个答案:

答案 0 :(得分:1)

我之前在我们的环境中遇到过这个问题,诀窍是在$_.符号变量之后使用双引号。 $_."vasco-LinkDPToUserToken"

get-aduser -filter * -Properties * | select @{name="vasco";expression={$_."vasco-LinkUserToDPToken" -join}},samaccountname | Export-Csv U:\test.csv -NoTypeInformation

答案 1 :(得分:0)

您应该可以通过以下名称访问该媒体资源:

$UserObject.Properties.Item("vasco-LinkUserToDPToken")

所以你的Hash表表达式看起来像这样:

@{name="vasco";expression={$_.Properties.Item("vasco-LinkUserToDPToken") -join}}