Can anyone see any issues with doing it this way.
Sim, vejo dois problemas imediatos que podem surgir da sua abordagem atual.
1. Vírgulas com escape
Considere uma UO com uma vírgula em seu nome, como: OU=Users\, Admin,DC=corp,DC=example
Seu uso de string.Split()
não se importa com a sequência de escape e você acaba com:
Admin,DC=corp,DC=example
Use o operador -split
regex com um lookbehind para ter certeza de que você ignorou aspas:
$parts = $user.DistinguishedName -split '(?<!\),'
2. Portabilidade
Seu código assume que a parte NC do DN (por exemplo, DC=example,DC=com
) sempre terá apenas 2 rótulos de largura. Isso significa que seu código falhará se você usá-lo em scripts que você queira reutilizar em outros domínios / ambientes.
Eu pegaria cada parte, da direita para a esquerda até encontrar um sem o prefixo DC
RDN:
$topParts = foreach($part in $parts[-1..-$parts.Length]){
$part
if($part -notlike 'DC=*'){
break
}
}
# Remember to reverse the RDNs again
$path = $topParts[-1..-$topParts.Length] -join ','