-用转义字符替换(值)?
-replace (value) with an escape char?
我需要从以前的 IT 管理员命名非常糟糕的帐户中提取名字和姓氏,并在同一源 OU 中重新创建它们。
我似乎无法通过帐户名中的字符。我需要提取 First、Last 和剩余的 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)'", ""
括号和 \ 似乎导致我尝试的一切都失败了。我已经搜索过,似乎没有像 ^ 这样的简单转义字符用于批处理文件。
反引号是转义字符,通常只用于 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()
,参数应该是一个数字,要显示的字符串的数字或字符(并删除您指定的字符数之后的每个字符)。当它期望一个 int 时给它一个字符串只会出错所以我用 .replace()
代替。
.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\)
感谢大家的帮助。
$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
$DN
我需要从以前的 IT 管理员命名非常糟糕的帐户中提取名字和姓氏,并在同一源 OU 中重新创建它们。 我似乎无法通过帐户名中的字符。我需要提取 First、Last 和剩余的 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)'", ""
括号和 \ 似乎导致我尝试的一切都失败了。我已经搜索过,似乎没有像 ^ 这样的简单转义字符用于批处理文件。
反引号是转义字符,通常只用于 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()
,参数应该是一个数字,要显示的字符串的数字或字符(并删除您指定的字符数之后的每个字符)。当它期望一个 int 时给它一个字符串只会出错所以我用 .replace()
代替。
.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\)
感谢大家的帮助。
$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
$DN