0

我在表单中有一个 Active Directory 组名称列表

cn=GROUPA,ou=Dept1,ou=Departmental Groups,ou=GROUPS1,dc=test,dc=server,dc=com

我想知道是否有办法使用 -replace 函数删除所有“ou=”和“dc=”部分。我知道我可以使用

-replace "ou=Dept1",""

但我想知道是否有一种方法可以在不知道 Dept1 部分的情况下替换“ou=Dept1”,因为并非所有组名都包含 Dept1,而是使用其他名称。我在想也许可以通过某种方式使用select-stringa -notlike,但我还没有找到一种方法。谢谢你。

4

3 回答 3

1

从另一个方向来:

-replace '.+?(dc=.+)','$1'
于 2013-04-23T17:14:43.263 回答
1

是的,只需使用替换...

$myOUString.Replace(",ou",",dc")

将每个 ,cn 替换为 ,dn 并确保如果有一个包含 ou 的组由于其他原因你没问题,例如Thousands不会变成thdcsands

$myOuString -Replace ",ou",",dc" should also work.

无论哪种方式,您的示例中都不需要通配符,因为您不想将 ou=ForgottenUsers 替换为 dc=

于 2013-04-23T16:31:36.843 回答
1

删除所有 ou= 和 dc=

-replace 'dc=.+?,|dc=.+$|ou=.+?,',''

它会给你留下cn=GROUPA,. 如果您实际上只想要 cn 部分,您可以这样做:

-match '(cn=.+?),' | Out-Null
$matches[1]

在问题的第二部分中,您可以在不知道名称的情况下替换 ou= 部分,如下所示:

-replace 'ou=.+?', 'ou=test,'
于 2013-04-23T16:34:42.220 回答