AD


För ett tag sedan upptäckte jag att det inte gick att byta lösenord via vår webmail (Outlook Web Access (OWA)). Eftersom jag inte hadde testat att byta lösenord där tidigare, och jag inte unde få några säkra svar från någon annan heller, var jag osäker på om det någonsin hadde fungerat.

Nu har jag dock ramlat över en artikel där det står svart på vitt att Microsoft rekommenderar att man använder WINS med Exchange 2003. Detta på grund av att Exchange behöver kunna göra NetBIOS namnuppslagningar. Jag har tidigare använt lmhosts-filen, men det har tydligen inte räckt. Eller så har jag gjort nåt fel.

I alla fall, efter att ha aktiverat WINS-servern igen, och satt Exchangeservern att använda den (och även domänkontrollanten), fungerar det nu att byta lösenord via OWA. 

Att skapa en användare och sätta lösenordet i ADAM gör man med enkelhet med hjälp av ADAM-adsiedit. Men om man vill sätta lösenordet med hjälp av script stöter man gärna på lite stök.

1. ”The active directory property cannot be found in the cache”

När jag provade sätta lösenord med hjälp av ‘SetPassword’ fick jag ovanstående fel. Felet är enligt olika källor på internet missvisande och felet är troligen i stället att ADAM inte tycker att den anv. jag kör med kan godkännas med de förutsättningar jag ger. Den har alltså för hög säkerhetsnivå. Tydligen kan man sätta upp ADAM att köra SSL för at lösa det.

Men det finns en annan lösning: Sätt vilken port som skall användas och att lösenordet kan skickas i klartext, så fungerar det. Följande kod borde då funka (urklipp):

Const ADS_OPTION_PASSWORD_PORTNUMBER As Long = 6
Const ADS_OPTION_PASSWORD_METHOD As Long = 7
Const ADS_PASSWORD_ENCODE_REQUIRE_SSL As Integer = 0
Const ADS_PASSWORD_ENCODE_CLEAR As Integer = 1
entryU.Invoke(”setOption”, New Object() {ADS_OPTION_PASSWORD_PORTNUMBER, 389})
entryU.Invoke(”setOption”, New Object() {ADS_OPTION_PASSWORD_METHOD, ADS_PASSWORD_ENCODE_CLEAR})
entryU.Invoke(”setPassword”, New Object() {CreatePassword()})


2. ”Bad variable type” Problemet är att då får jag felet ”Bad variable type”. Det här felet beror då på att jag kör med Windows 2000, och den version av ADSI som finns med här har ett fel som resulterar i det här. Och helt riktigt, kör jag samma kod på en Windows 2003 fungerar det felfritt. Det skall finnas en hotfix till Windows 2000, men jag har inte brytt mig om att hämta ner den eftersom jag ändå skall köra på Windows 2003. Du kan läsa mera om sista felet på

http://groups.google.com/group/microsoft.public.adsi.general/browse_thread/thread/68a514db961b6051/46f72e8189ed9c34?lnk=st&q=%22bad+variable+type%22+%2Bsetoption&rnum=1&hl=en#46f72e8189ed9c34