我有一个表单
的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-string
与-notlike
一起使用,但我还没有找到方法。谢谢。
答案 0 :(得分:1)
是的,只需使用替换...
$myOUString.Replace(",ou",",dc")
将替换每个,cn with,dn并且还会确保如果有一个组由于其他原因而包含ou,那么你就可以了,因为eaxample Thousands 不会成为 thdcsands
$myOuString -Replace ",ou",",dc" should also work.
无论如何,你的示例中不应该使用通配符,因为你不想用dc =
替换ou = ForgottenUsers答案 1 :(得分:1)
删除所有ou =和dc =
-replace 'dc=.+?,|dc=.+$|ou=.+?,',''
它将为您留下cn=GROUPA,
。如果你真的只想要cn部分,你可以做:
-match '(cn=.+?),' | Out-Null
$matches[1]
在问题的第二部分,您可以在不知道名称的情况下替换ou =部分:
-replace 'ou=.+?', 'ou=test,'
答案 2 :(得分:1)
从另一个方向来看:
-replace '.+?(dc=.+)','$1'