[Windows] Entercode LDAP / Active Directory *

Pagina: 1
Acties:

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Wij zijn met een project bezig om de Active Directory in te vullen.
Dit lukt perfect, maar bij een attribuut dat volgens Active Directory meerdere regels is, wordt het schrijven daarvan niet echt makkelijk.

Als wij in AD bij Address meerdere regels invullen en wij lezen dit uit, dan komt er een \n voor (Althans dat denken wij want met een split op \n zet ie hem in meerdere regels) ,maar gaan wij ditzelfde doen en schrijven naar AD met code, dan zet ie in AD een blokje neer (de ALT-13 die je vaak ziet in dos).

Google geeft weinig relevant, zoeken op "active directory" ldap enter e.d. komen allemaal andere resultaten naar voren...

Weet iemand de code?

Dit is volgens mij algemeen, vandaar dat ik geen programmeertaal neerzet, maar mocht het nodig zijn, wij gebruiken c#.

[ Voor 23% gewijzigd door mabarto op 11-06-2004 17:15 ]


Verwijderd

\n vervangen door niets als je het gaat versturen naar de server.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Wat JackieHerer zegt.

En waarom denk je dat dit iets specifieks is voor LDAP? Als je toch weet dat er een \n in staat, dan snap je zelf toch ook wel dat je die door niets moet vervangen? Dan kun je daar ook je zoekwoorden op Google op aanpassen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Volgens mij word ik verkeerd begrepen:
Wij willen meerdere regels kunnen neerzetten. In Active Directory admin kan ik gewoon een entertoets drukken en ga ik naar de volgende regel.
Als ik \n er niet in zet, gaat ie natuurlijk alles achter elkaar zetten.

Ik wil in code dus meerdere regels kunnen schrijven; Wat is de code daarvan, want active directory zet bij een \n een klein vierkantje. Kennelijk snapt ie dat niet, maar wat moet het dan wel zijn om goed in Active Directory te krijgen.

AD = LDAP. Weet dus niet of het puur een microsoft iets is of LDAP in het algemeen.

Verwijderd

probeer "\r\n" eens maar beter is om Environment.NewLine te gebruiken!

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Verwijderd schreef op 11 juni 2004 @ 18:17:
probeer "\r\n" eens maar beter is om Environment.NewLine te gebruiken!
In beide gevallen krijgen wij zo'n enterteken, helaas...

[ Voor 17% gewijzigd door mabarto op 11-06-2004 18:25 ]


Verwijderd

Is overstappen op vbscript een optie? Onderstaand voorbeeld werkt hier prima:
code:
1
2
3
4
5
6
On Error Resume Next
Set objUser = GetObject ("LDAP://cn=administrator,cn=Users,dc=tailspintoys,dc=com")
objUser.Put "streetaddress", "Dit" +vbCrLf + "is" + vbCrlf + "een" + vbCrLf + "test"
objUser.SetInfo
strStreetAddress = objUser.Get("streetAddress")
WScript.Echo "Street Address: " & strStreetAddress

[ Voor 16% gewijzigd door Verwijderd op 11-06-2004 19:41 ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:27
Is overstappen op vbscript een optie? Onderstaand voorbeeld werkt hier prima:
Hij werkt in C# aan een applicatie. Denk niet dat die snel over zal stappen naar VBS :)


ontopic: http://members.tripod.com/vgoenka/unixscripts/unldif.sed.txt

Verwijderd

Okay, dan een stukje C# (getest op Windows Server 2003)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try
{
string path = "LDAP://CN=Users,DC=tailspintoys,DC=com";
DirectoryEntry entry = new DirectoryEntry(path, "server01.tailspintoys.com\\administrator", "password");
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=administrator)";
SearchResult result = search.FindOne();
DirectoryEntry user = result.GetDirectoryEntry();
user.Properties["streetaddress"].Value = "This" + Environment.NewLine + "Is a C#" + Environment.NewLine + "Test" ;
user.CommitChanges();
}
catch( Exception exception )
{
Console.WriteLine( exception.Message );
}

[ Voor 25% gewijzigd door Verwijderd op 12-06-2004 15:49 ]


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Verwijderd schreef op 12 juni 2004 @ 15:47:
Okay, dan een stukje C# (getest op Windows Server 2003)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try
{
string path = "LDAP://CN=Users,DC=tailspintoys,DC=com";
DirectoryEntry entry = new DirectoryEntry(path, "server01.tailspintoys.com\\administrator", "password");
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=administrator)";
SearchResult result = search.FindOne();
DirectoryEntry user = result.GetDirectoryEntry();
user.Properties["streetaddress"].Value = "This" + Environment.NewLine + "Is a C#" + Environment.NewLine + "Test" ;
user.CommitChanges();
}
catch( Exception exception )
{
Console.WriteLine( exception.Message );
}
Na deze code geprobeerd te hebben kreeg ik inderdaad direct een <enter> erin zoals ik wilde. Na heel mijn code uitgepluist te hebben waarom dit niet bij mij werkte kwam ik er achter dat mijn code wel werkte maar niet in een webservice.

Ik roep zeg maar met behulp van een webservice de bovenstaande code aan maar dan krijg ik die vervelende blokkies te zien.

Ik denk zelf dat ik dit kan oplossen door bijv. als adres het volgende mee te geven ""This;Is a C#;Test;" als value mee te geven waarbij ik de ; in mijn webservice vervangt door Environment.NewLine.

De enige conclusie dat ik kan trekken is dat de Environment.NewLine en de \r\n niet juist naar een webservice word doorgestuurd waardoor ik een blokkie krijg als value.

Als iemand een betere oplossing weet hoe ik wel een newline kan doorgeven via een webservice hoor ik het graaganders gebruik ik gewoon een ; als character die ik in mijnwebservice vervangt door een newline.

Alvast iedereen bedankt voor de hulp.

Verwijderd

barto018 schreef op 13 juni 2004 @ 13:38:
[...]
De enige conclusie dat ik kan trekken is dat de Environment.NewLine en de \r\n niet juist naar een webservice word doorgestuurd waardoor ik een blokkie krijg als value.

Als iemand een betere oplossing weet hoe ik wel een newline kan doorgeven via een webservice hoor ik het graaganders gebruik ik gewoon een ; als character die ik in mijnwebservice vervangt door een newline.
&#13;&#10;

Niet getest.

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Verwijderd schreef op 13 juni 2004 @ 14:20:
[...]

&#13;&#10;

Niet getest.
Helaas vertaalt ie deze characters niet naar een nieuwe regel.

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Voor de gene die het op prijs stellen van dit probleem kwam ik achter de volgende oplossing:

Als je een waarde stuurt met een nieuwe regel naar een webservice zoals (\r\n of Environment.NewLine) geeft deze waarde in de webservice een \n als waarde. Dus geen \r\n als waarde wat je hebt doorgestuurd waardoor het blokje ontstaat waar wij het over hadden.

Een workaround om dit probleem op te lossen is om in de webservice de waarde \n te zoeken en deze te vervangen door \r\n of Environment.NewLine.

Code in c# dus:

C#:
1
  value = value.Replace("\n", Environment.NewLine);


Hopelijk heeft iemand nog wat aan deze oplossing.

[ Voor 10% gewijzigd door mabarto op 14-06-2004 10:19 ]

Pagina: 1