Еще более короткий вариант ответа jon Z :
$s = "CN=Group Name I Want,OU=Group Container,DC=corp,DC=test,DC=local"
$s = $s -replace '^CN=|,.*$'
^
и $
- это якорь начала и конца строки.|
- это «или».
Совпадения - это CN=
в начале строки или строка, которая начинается с запятой и идет до концалиния (т.е. все после CN).replace
заменяется ничем, поэтому вы отбрасываете все совпадения и оставляете только сам CN.
Это, очевидно, не работает, если в вашем CN есть запятая (тьфу).
Предполагая, что за такой запятой следует пробел, это будет работать и будет хорошо для предыдущих примеров (\S
- без пробельных символов):
$s = $s -replace '^CN=|,\S.*$'
Я тестировалчтобы увидеть, был ли jon Z или этот вариант быстрее выполнить.При 1 470 000 DN первым потребовалось 36,87, а одному - 34,75.Не очень много в этом.
Это считывало DN из файла.Как ни странно, «накапливая» файл в массив и выполняя его, это заняло оба регулярных выражения на минуту дольше.ПК не был связан с памятью - файл был только 100 МБ.Не могу быть обеспокоен тем, чтобы добраться до сути этого прямо сейчас!