我需要从以前的IT管理员那里名称非常差的帐户中提取名字和姓氏,并在同一源OU中重新创建它们。账号名称中有一些字符我似乎无法通过。我需要拉取第一个、最后一个和剩余的DN,以便我可以在相同的OU结构中重新创建帐户。为了测试,我只在一个OU中使用一个用户,但将有许多不同的OU结构。"\“和”(供应商)“导致
我的最终目标是为脚本提供一个帐户DN列表,并重新创建没有不需要的"\“和"(vendor)”的帐户,然后执行first.last或类似的操作。
$source = "CN=last\, first (Vendor),OU=vendors,DC=somecompany,DC=com"
$arg = "(vendor)"
($source -split ',*..=')[1].Remove($arg)我也试过
($source -split ',*..=')[1] -replace "`(Vendor)'", ""括号和\n似乎导致了我试图失败的一切。我已经搜索过了,对于批处理文件,似乎没有像^这样的简单转义字符。
发布于 2020-04-01 05:29:53
反号是转义字符,通常仅用于powershell代码。不过,在正则表达式中,您需要将反斜杠加倍。
$source = "CN=last\, first (Vendor),OU=vendors,DC=somecompany,DC=com","CN=last\, first (Vendor),OU=vendors,DC=somecompany,DC=com"
$r = ($source[0] -split ',*..=|\\,').Replace("(Vendor)","").Where({ $_ -ne ''})
$r 对于.remove(),参数应该是一个数字,一个字符串要显示的数字或字符(并删除指定字符数之后的每个字符)。当它期望一个整数时,输入一个字符串将会出错,所以我使用了.replace()。
发布于 2020-04-01 07:19:28
.remove()接受一个数字作为参数:
($source -split ',*..=')[1].Remove
OverloadDefinitions
-------------------
string Remove(int startIndex, int count)
string Remove(int startIndex)使用反斜杠转义正则表达式字符:
($source -split ',*..=')[1] -replace "\(Vendor\)", ""
last\, first 确认者
[regex]::escape("(Vendor)")
\(Vendor\)发布于 2020-04-02 01:09:13
谢谢你所有的帮助。
$source = "CN=Doe\, John (Vendor),OU=vendors,DC=somecompany,DC=com"
$r = ($source -split ',*..=|\\,').Replace("(Vendor)","").Where({ $_ -ne ''})
$first = $r[1].replace(" ","")
$last = $r[0].replace(" ","")
$DN = ($source -split "OU=",2)[1]
$DN = "OU=" + $DN
$first
$last
$DNhttps://stackoverflow.com/questions/60959964
复制相似问题