Option Explicit '------------------------------------------------------------------------- ' MAPIAutocpnfig.vbs ' ' Beschreibung ' Das Programm sucht den aktuellen User im AD und liest den Homeserver und Alias aus ' Dann erstellt es eine PRF-Datei, später direkt das MAPI-Profil ' ' Achtung: Die PRF-Datei ist hier komplett im Script hinterlegt. Das erspart mir die Suche und das öffnen einer weiteren Datein ' Das VBscript benötigt damit nur noch Outlook 200x oder PROFGEN zum Funktionieren ' eine bestehende PRF-Datei wird überschrieben !! ' ' Das Skript wird mit den Berechtigungen des angemeldeten Benutzers ' ausgeführt. Die entsprechenden Berechtigungen sind sicher zu stellen ' ' (c)2006 Net at Work Netzwerksysteme GmbH ' ' Version 1.0 (24. Apr 2006) Frank Carius ' Initial Release ' '------------------------------------------------------------------------- const EVENTLOG_SUCCESS = 0 const EVENTLOG_ERROR = 1 const EVENTLOG_WARNING = 2 const EVENTLOG_INFORMATION = 4 const EVENTLOG_AUDIT_SUCESS = 8 const EVENTLOG_AUDIT_FAILURE = 10 const PRFFILENAME = "c:\profile.prf" const OUTLOOKPATH = """c:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE""" const ForWriting = 2 dim wshShell, wshNet, objUser, objSysInfo, objTextFile, objFSO dim strResult, strHomeServer, strHomeServerDN, strUseralias dim objShell, objExecObject dim arrDN set wshShell = CreateoBject("wscript.shell") wshSHell.logevent EVENTLOG_INFORMATION,"MAPIAutoConfig gestartet" strResult = "MAPIAutoConfig gestartet" Debugoutput "MAPIAutoConfig gestartet" set wshNet = CreateObject ("wscript.network") strResult = strResult & vbcrlf & "Computer:" & wshnet.computername Debugoutput "Computer:" & wshnet.computername set objSysInfo= CreateObject ("ADSystemInfo") strResult = strResult & vbcrlf & "AD Username:" & objSysInfo.Username Debugoutput "AD Username:" & objSysInfo.Username set objUser = GetObject("LDAP://" & objSysInfo.Username) set objUser = GetObject("LDAP://" & objSysInfo.Username) strUseralias = objUser.alias ' Alternativ: strUseralias = objUser.mail strResult = strResult & vbcrlf & "strUseralias:" & strUseralias Debugoutput "strUseralias:" & strUseralias strHomeServerDN = objUser.get("msExchHomeServerName") if strHomeServerDN = "" then strResult = strResult & vbcrlf & "strHomeServerDN: leer. User hat kein Postfach" Debugoutput "strHomeServerDN: leer. User hat kein Postfach" wshSHell.logevent EVENTLOG_WARNING,"strHomeServerDN: leer. User hat kein Postfach" else strResult = strResult & vbcrlf & "strHomeServerDN:" & strHomeServerDN Debugoutput "strHomeServerDN:" & strHomeServerDN arrDN = split(strHomeServerDN,"cn=") strHomeServer = arrDN(ubound(arrDN)) 'Get last record strResult = strResult & vbcrlf & "strHomeServer:" & strHomeServer Debugoutput "HomeServer:" & strHomeServer Debugoutput "CreateProfile: "& vbcrlf & _ " Username = " & strUseralias & vbcrlf & _ " Servername= " & strHomeServer Debugoutput "Writing PRF-File:START" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.CreateTextFile(PRFFILENAME) '~ Set objTextFile = objFSO.OpenTextFile("C:\test.prf", ForWriting) objTextFile.WriteLine("[General]") objTextFile.WriteLine("Custom=1") objTextFile.WriteLine("ProfileName=MSXFAQ Profil") objTextFile.WriteLine("DefaultProfile=Yes") objTextFile.WriteLine("OverwriteProfile=Yes") '~ objTextFile.WriteLine("ModifyDefaultProfileIfPresent=TRUE") objTextFile.WriteLine("DefaultStore=Service2") objTextFile.WriteLine("BackupProfile=No ") objTextFile.WriteLine("") objTextFile.WriteLine("; **************************************************************") objTextFile.WriteLine("; Section 2 - Services in Profile") objTextFile.WriteLine("; **************************************************************") objTextFile.WriteLine("[Service List]") objTextFile.WriteLine("Service1=Microsoft Outlook Client") objTextFile.WriteLine("Service2=Microsoft Exchange Server") objTextFile.WriteLine("Service3=Outlook Address Book") objTextFile.WriteLine("") objTextFile.WriteLine(";***************************************************************") objTextFile.WriteLine("; Section 4 - Default values für each service.") objTextFile.WriteLine(";***************************************************************") objTextFile.WriteLine("[Service1]") objTextFile.WriteLine("CachedExchangeMode=0x00000002") objTextFile.WriteLine("CachedExchangeSlowDetect=FALSE") objTextFile.WriteLine("AutoArchiveFileName=%UserPROFILE%\My Documents\outlook\archive.pst") objTextFile.WriteLine("ArchiveSettings=0x01c501efa21ae85a") objTextFile.WriteLine("") objTextFile.WriteLine("[Service2]") objTextFile.WriteLine("OverwriteExistingService=no") objTextFile.WriteLine("UniqueService=Yes") objTextFile.WriteLine("MailboxName="& strUseralias) objTextFile.WriteLine("HomeServer="& strHomeServer) objTextFile.WriteLine("AccountName=Microsoft Exchange Server") objTextFile.WriteLine("CachedExchangeConfigFlags=0x00000500") objTextFile.WriteLine("OfflineAddressBookPath=%UserPROFILE%\my documents\outlook\") objTextFile.WriteLine("OfflineFolderPath=%UserPROFILE%\My Documents\outlook\outlook.ost") objTextFile.WriteLine("ExchangeConfigFlags=0x00000004 ; für desktops") objTextFile.WriteLine("") objTextFile.WriteLine("[Service3]") objTextFile.WriteLine("") objTextFile.WriteLine(";***************************************************************") objTextFile.WriteLine("; Section 6 - Mapping für profile properties") objTextFile.WriteLine(";***************************************************************") objTextFile.WriteLine("") objTextFile.WriteLine("[Microsoft Exchange Server]") objTextFile.WriteLine("ServiceName=MSEMS") objTextFile.WriteLine("MDBGUID=5494A1C0297F101BA58708002B2A2517") objTextFile.WriteLine("MailboxName=PT_STRING8,0x6607") objTextFile.WriteLine("HomeServer=PT_STRING8,0x6608") objTextFile.WriteLine("OfflineAddressBookPath=PT_STRING8,0x660E") objTextFile.WriteLine("OfflineFolderPath=PT_STRING8,0x6610") objTextFile.WriteLine("ExchangeConfigFlags=PT_LONG,0x6601") objTextFile.WriteLine("") objTextFile.WriteLine("[Exchange Global Section]") objTextFile.WriteLine("SectionGUID=13dbb0c8aa05101a9bb000aa002fc45a") objTextFile.WriteLine("MailboxName=PT_STRING8,0x6607") objTextFile.WriteLine("HomeServer=PT_STRING8,0x6608") objTextFile.WriteLine("RPCoverHTTPflags=PT_LONG,0x6623") objTextFile.WriteLine("RPCProxyServer=PT_UNICODE,0x6622") objTextFile.WriteLine("RPCProxyPrincipalName=PT_UNICODE,0x6625") objTextFile.WriteLine("RPCProxyAuthScheme=PT_LONG,0x6627") objTextFile.WriteLine("CachedExchangeConfigFlags=PT_LONG,0x6629") objTextFile.WriteLine("") objTextFile.WriteLine("[Outlook Address Book]") objTextFile.WriteLine("ServiceName=CONTAB") objTextFile.WriteLine("") objTextFile.WriteLine("[Microsoft Outlook Client]") objTextFile.WriteLine("SectionGUID=0a0d020000000000c000000000000046") objTextFile.WriteLine("FormDirectoryPage=PT_STRING8,0x0270") objTextFile.WriteLine("WebServicesLocation=PT_STRING8,0x0271") objTextFile.WriteLine("ComposeWithWebServices=PT_BOOLEAN,0x0272") objTextFile.WriteLine("PromptWhenUsingWebServices=PT_BOOLEAN,0x0273") objTextFile.WriteLine("OpenWithWebServices=PT_BOOLEAN,0x0274") objTextFile.WriteLine("CachedExchangeMode=PT_LONG,0x041f") objTextFile.WriteLine("CachedExchangeSlowDetect=PT_BOOLEAN,0x0420") objTextFile.WriteLine("ArchiveSettings=0x0040,0x0032") objTextFile.WriteLine("DoAutoArchive=PT_BOOLEAN,0x0320") objTextFile.WriteLine("AutoArchiveFileName=PT_STRING8,0x0324") objTextFile.WriteLine("FormDirectoryPage=PT_STRING8,0x0270") objTextFile.WriteLine("EmptyWastebasket=PT_BOOLEAN,0x0115") objTextFile.WriteLine("SelectEntireWord=PT_BOOLEAN,0x0118") objTextFile.WriteLine("AfterMoveMessage=PT_LONG,0x013B") objTextFile.WriteLine("CloseOriginalMessage=PT_BOOLEAN,0x0132") objTextFile.WriteLine("GenReadReceipt=PT_BOOLEAN,0x0141") objTextFile.WriteLine("GenDeliveryReceipt=PT_BOOLEAN,0x014C") objTextFile.WriteLine("DefaultSensitivity=PT_LONG,0x014F") objTextFile.WriteLine("DefaultPriority=PT_LONG,0x0140") objTextFile.WriteLine("SaveSentMail=PT_BOOLEAN,0x0142") objTextFile.Close Debugoutput "Writing PRF-File: DONE" '~ if wshshell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles") = "" then '~ wshSHell.logevent EVENTLOG_WARNING,"Kein MAPI-Profil vorhanden" '~ else '~ wshSHell.logevent EVENTLOG_WARNING,"MAPI-Profil vorhanden" '~ end if Set objShell = CreateObject("WScript.Shell") '~ outlook2003 /importprf prffilename Set objExecObject = objShell.Exec(OUTLOOKPATH & " /importprf " & PRFFILENAME) end if wshSHell.logevent EVENTLOG_INFORMATION,"MAPIAutoConfig beendet" & vbcrlf & strResult sub Debugoutput(strmessage) wscript.echo "Debug:" & strmessage end sub