AJUDA COM STRING

 Tópico anterior Próximo tópico Novo tópico

AJUDA COM STRING

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#480136 - 14/03/2018 08:49:32

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Pessoal bom dia,

Uma ajuda.

Na minha ferramenta, em um dos processo, eu leio a informação do Active Directory para buscar o atributo (manager) do usuário, até aqui tudo bem.
Quando ele retornar a informação ele traz da seguinte forma:
Username = "CN=Silva de Oliveira\, Willian,OU=Users,OU=Minha OU,DC=mydomain,DC=mydomain"

Eu precisaria quebrar a informação para retirar somente o usuário nesse exemplo CN=Silva de Oliveira, Willian, vejam que existem uma barra "\" contudo essa barra já validei a informação e em alguns casos ela aparece e em outros não.

Alguém teria uma sugestão de como eu poderia quebrar essa string para pegar somente o usuário ? Se for o caso posso até solicitar para substituir a barra no futuro caso exista.

Ou também se tiver uma forma mais fácil de ler essa parâmetro do AD, já limpando as informações desnecessarias.

ADSearchResult.Properties.Item("manager")(0).ToString()
Username = "CN=Silva de Oliveira\, Willian,OU=Users,OU=Mateus Leme,DC=mydomain,DC=mydomain"

Encontrei esse exemplo, mas não consegui converter para vb.net acredito ser c#.
var manager2 = input.Split(',').Select(pair => pair.Split('=').LastOrDefault()).ToArray().GetValue(0);


---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

Resposta escolhida #480138 - 14/03/2018 09:43:00

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe

Última edição em 14/03/2018 09:57:49 por KERPLUNK

Você não precisa buscar a string toda, você pode simplesmente trazer os membros de um grupo:

public IList<string> GetMembers(string groupName) {
    if (string.IsNullOrEmpty(groupName))
        throw new ArgumentNullException("groupName");

    IList<string> members = new List<string>();

    DirectoryEntry root = new DirectoryEntry(@"LDAP://my.domain.com"); //obviamente mude aqui para o seu domínio
    DirectorySearcher searcher = new DirectorySearcher();
    searcher.SearchRoot = root;
    searcher.SearchScope = SearchScope.Subtree;
    searcher.PropertiesToLoad.Add("member");

    searcher.Filter = string.Format("(&(objectClass=group)(sAMAccountName={0}))", groupName);

    SearchResult result = searcher.FindOne();
    DirectoryEntry groupFound = result.GetDirectoryEntry();
    for (int index = 0; index < ((object[])groupFound.Properties["member"].Value).Length; ++index)
        members.Add((string)((object[])groupFound.Properties["member"].Value)[index]);

    return members;

}


EDIT: O que está acima não é o que você quer. O que está quebrando a mufa é o "\," então a gente simplesmente remove ele e segue o baile:

var splitado = Username.Replace("\\,","").Split(',');


Nesse ponto, a variável "splitado" conterá 5 resultados, que são exatamente os valores contidos na string LDAP

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#480140 - 14/03/2018 10:37:18

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Desculpa mas não capitei sua solução...
Entendi que vamos fazer um replace da "\" retirando ela da string e vamos delimitar pelo ",", mas nao consegui interpretar o seu split

Username = CN=Silva de Oliveira\, Willian,OU=Users,OU=Minha OU,DC=mydomain,DC=mydomain
Username = Username.Replace("\,", ",").Split(",").First()

Não daria certo porque o usuário possui uma virgula antes então ele iria comer o restante
Exemplo:CN=Silva de Oliveira\, Willian ele iria retirar o "Willian" e precisaria manter na string para procurar mais informações em outra função ou seja precisaria deixar o usuário
Username="Silva de Oliveira, Willian"


---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#480141 - 14/03/2018 10:55:09

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Então substitua a vírgula por outra coisa, faça o split e substitua a "outra coisa" novamente por vírgula.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ALEVALE em 17/03/2018 13:17:54