首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分割DistinguishedName?

如何分割DistinguishedName?
EN

Stack Overflow用户
提问于 2015-05-01 11:54:14
回答 4查看 26.2K关注 0票数 3

我有一个来自AD的人员和他们的DN的列表(我不能直接访问该AD)。它们的DNs格式如下:

代码语言:javascript
复制
$DNList = 'CN=Bob Dylan,OU=Users,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com',
          'CN=Ray Charles,OU=Contractors,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com',
          'CN=Martin Sheen,OU=Users,OU=Dept,OU=Agency,OU=WaySouth,DC=myworld,DC=com'

我想让$DNList返回以下内容:

代码语言:javascript
复制
OU=Users,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com
OU=Contractors,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com
OU=Users,OU=Dept,OU=Agency,OU=WaySouth,DC=myworld,DC=com
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-01 14:51:40

我决定把我的评论变成一个回答:

代码语言:javascript
复制
$DNList | ForEach-Object {
    $_ -replace '^.+?(?<!\\),',''
}

Debuggex Demo

这将正确地处理作为第一个组件的一部分的转义逗号。

我们在字符串的开头对一个或多个字符进行一个非贪婪的匹配,然后查找一个没有反斜杠的逗号(这样,这个点将匹配反斜杠和逗号组合并继续运行)。

票数 7
EN

Stack Overflow用户

发布于 2015-05-01 12:19:04

您可以使用这样的替换来删除第一个元素:

代码语言:javascript
复制
$DNList -replace '^.*?,(..=.*)$', '$1'

^.*?,是从字符串开始到逗号的最短匹配。

(..=.*)$匹配字符串的其余部分(从逗号后面的两个字符开始,后面跟着一个=字符)并对它们进行分组,以便在替换中将匹配引用为$1

票数 3
EN

Stack Overflow用户

发布于 2015-05-01 12:10:02

你每个用户有7个项目,逗号分开,你想摆脱第一个项目。

因此,使用逗号分隔符拆分数组中的每个项,返回匹配值1-6 (0是要跳过的第一项),然后再次使用逗号连接。

代码语言:javascript
复制
$DNList = $DNList|foreach{($_ -split ',')[1..6] -join ','}

如果然后输入$DNList,它将返回

代码语言:javascript
复制
OU=Users,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com
OU=Contractors,OU=Dept,OU=Agency,OU=NorthState,DC=myworld,DC=com
OU=Users,OU=Dept,OU=Agency,OU=WaySouth,DC=myworld,DC=com
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29986368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档