【发布时间】:2019-09-12 18:24:26
【问题描述】:
我有与 Active Directory 对象不同的专有名称,并且在将这些 dn 拆分为简单名称时需要过滤掉转义字符。
我已经有一个 PowerShell 的字符串 -split,但这不会过滤掉转义字符。我已经尝试使用正则表达式进行正则表达式,但在这种情况下我确实需要像可选的正则表达式之类的东西?也许我只是想得太复杂了。
字符串示例:
OU=External,OU=T1,OU=\+TE,DC=test,DC=dirOU=\#External,OU=T1,OU=\+TE,DC=test,DC=dirOU=\+External,OU=T1,OU=\+TE,DC=test,DC=dir
因为 + 和 # 被转义但它们是这些对象的实际名称,我需要删除转义字符
使用以下 PowerShell 可以获取对象的名称
($variable -split ',*..=')[1]
实际结果:
External\#External\+External
预期结果:
External#External+External
可以将正则表达式与$variable -creplace "REGEX" 一起使用,但我找不到适合所有这些情况的正则表达式。
我的尝试是:(?<=OU=\\).+?(?=,OU=),但如果 \ 存在则匹配
我需要这个名称来在 Active Directory 中创建对象。
【问题讨论】:
-
您可以使用
-Replace运算符删除\。$OU -Replace "\\". -
您可以在拆分
-split ',?..=\\?'中添加斜杠作为可选,类似于您处理逗号的方式
标签: regex powershell split