我正在尝试删除Active Directory" DistinguishedName"归因于最具体的OU标题。例如,我得到了:
CN=Smith\, Tom,OU=Developers,OU=Users,DC=myOrganization,DC=com
我希望将其简化为:
Developers
我尝试过这样做没有成功(假设变量正在存储如上所述的DistinguisedName):
$disName = $disName.Replace("CN(*)OU=", "")
$disName = $disName.Replace(",OU(*)=com", "")
这些陈述对字符串没有任何改变。
我不熟悉在Powershell中使用正则表达式,所以我假设我只是犯了一个语法错误,但概念是正确的。
答案 0 :(得分:2)
正如其他人已经建议的那样,使用正则表达式进行此类数据提取比较简单,因为Plotter (int dotsPerPx, Canvas canvas_) {
this.dotsPerPx = dotsPerPx;
this.canvas = canvas_;
}
int dotsPerPx; //This one gets set to 1, as supposed
Canvas canvas; //And this remains null, though canvas_==openGLCanvas{...}
int screenWidth = canvas.getWidth(); //NullPointerException!
不支持非贪婪匹配等内容。不过我建议使用稍微复杂的正则表达式:
String.Replace
因为当OU名称包含空格或逗号等字符时,到目前为止所提出的建议会产生不良结果。
演示:
^.*?,\s*ou=(.*?),\s*(?:ou|dc).*$
答案 1 :(得分:0)
您可以使用正则表达式:
$attribute = "CN=Smith\, Tom,OU=Developers,OU=Users,DC=myOrganization,DC=com"
[regex]::Match($attribute, 'OU=(\w+),').Groups[1].Value
输出:
开发
答案 2 :(得分:0)