Я пытаюсь выделить только имя группы.
Выполнение этой команды:
Get-ADUser aaa00 -Properties memberof |
Select-Object -ExpandProperty memberof
возвращает:
CN=GroupName,OU=xxx,OU=xxx,DC=xxx,DC=xxx,DC=xxx
Я хочу только то, что естьпосле CN=
, который является именем группы.
Итак, я делаю:
Get-ADUser aaa00 -Properties memberof |
Select-Object -ExpandProperty memberof |
ForEach-Object {
$isolateName = $_ -match "(?<=\=)(.*?)(?=\,)"
$matches[0]
}
, который работает и возвращает только имя группы.
Однако яЯ хочу сохранить имена групп в массиве для последующего использования, поэтому я делаю:
Get-ADUser aaa00 -Properties memberof |
Select-Object -ExpandProperty memberof |
ForEach-Object {
$isolateName = $_ -match "(?<=\=)(.*?)(?=\,)"
[array]$Names += $matches[0]
}
Это прекрасно работает.
Мой вопрос в том, что оптимальный способ работы сRegEx?
Я делаю -match
, затем проверяю $matches
, но я не могу просто сделать это инвертированным и сделать "заменить все, что НЕ совпадает с моим регулярным выражением, ничем".
Как мне это сделать, в основном сводить на нет весь этот Regex?
PS: я знаю, что могу использовать Get-ADPrincipalGroupMembership
, чтобы получить только имя, но я не использую эту команду, поскольку она невероятно медленная по сравнению сGet-ADUser
.