Answered by:
GAL default adress book GPO

Question
-
Is anyone knows how to set up GAL as default address list via GPO ? I know how to do it manually via ctrl+shift+b - bla-bla-bla. BUT i cant found any solution to do it in a whole organization. Preffered way is GPO (scripting or something else). Maybe there is something i missed about Active Directory instruments to do such settings ....
Be real
Monday, November 19, 2012 10:51 AM
Answers
-
actually i found everything. here is two .vbs scripts that doing that job. User get the address book order - GAL first and set GAL the default address list.
now i have 300 users and all this made by GPO
http://sdrv.ms/VaOL7T (set-GALDefaultABViewOrder) - this is Address list order script. (GAL become the first)
http://sdrv.ms/VaOPo6 (set-GALasDefaultAB) - this is the script that make GAL the default address book.
MIRROR LINK
https://1drv.ms/f/s!Akz0iErhSP08h1SXR_EKpL9ivC2l
Be real
Tuesday, November 27, 2012 1:25 PM
All replies
-
actually resolved this by
To configure the script:
- Set your Outlook Address Book to the view you want to set on the remote workstation. (Tools - Address Book - Tools - Options - Set show this address list first).
- Export the registry key for this Outlook profile.
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\(your default Outlook profile)\9207f3e0a3b11019908b08002b2a56c2] - Open the .REG file and copy the HEX code for "01023d06". For example:
00,00,00,00,dc,a7,40,c8,c0,42,10,1a,b4,b9,08,00,2b,2f,e1,82,01
- Edit the Set-DefaultABView.VBS file (see attached) line to use your hex code. Make sure to leave in the double-quotes.
Const DestABUsers = "00,00,00,00,dc,a7,40,c8,c0,42,10,1a,b4,b9,08,00,2b,2f,e1,82,01"
script i found HERE .
(the original URL http://www.ericwoodford.com/set-default-outlook-address-book-script)
but actually there is another problem now. The defaul address lists order ... if it is set to manual - how can i set it to "start with GAL" via registry or via .VBS ???
Be real
- Marked as answer by Tony Chen CHN Tuesday, November 27, 2012 5:57 AM
- Unmarked as answer by Voffka_UA Tuesday, November 27, 2012 1:25 PM
Monday, November 19, 2012 11:54 AM -
-
its actually a good idea to share solutions. Because there was many times i fund something useful for me axactly like that - someone share his solution.
Be real
Tuesday, November 27, 2012 1:17 PM -
actually i found everything. here is two .vbs scripts that doing that job. User get the address book order - GAL first and set GAL the default address list.
now i have 300 users and all this made by GPO
http://sdrv.ms/VaOL7T (set-GALDefaultABViewOrder) - this is Address list order script. (GAL become the first)
http://sdrv.ms/VaOPo6 (set-GALasDefaultAB) - this is the script that make GAL the default address book.
MIRROR LINK
https://1drv.ms/f/s!Akz0iErhSP08h1SXR_EKpL9ivC2l
Be real
Tuesday, November 27, 2012 1:25 PM -
Does anyone know if this script works with Outlook 2010 or 2013? I am not having much luck with it on either version.
Thanks
Richie
Monday, February 24, 2014 3:12 PM -
Did you find a solution for Outlook 2013?Friday, August 8, 2014 8:18 AM
-
You just have to modify registry keys for office 2013.
Be real
Friday, August 8, 2014 12:33 PM -
Can you please post the script one more time - seems that the file is not available anymore.
Thanks,
Alex
Friday, August 29, 2014 12:37 PM -
http://sdrv.ms/VaOL7T
Sunday, September 14, 2014 9:48 AM -
Sorry, but the Link "http://sdrv.ms/VaOL7T" has now expired. Can you post it once again?
Thank you,
Joerg
Tuesday, December 8, 2015 9:04 AM -
check it out. just fixed url's
set-GALasDefaultAB
http://1drv.ms/1HSO902
set-GALDefaultABViewOrder
http://1drv.ms/1ONRmiI
Be real
- Edited by Voffka_UA Tuesday, December 8, 2015 4:22 PM
Tuesday, December 8, 2015 4:18 PM -
What registry key do we need to modify to make the GAL the default and the first oneThursday, April 7, 2016 1:02 PM
-
Kindly ask you to renew the linksTuesday, November 22, 2016 11:31 AM
-
Try thisone
https://1drv.ms/f/s!Akz0iErhSP08h1SXR_EKpL9ivC2l
Be real
- Edited by Voffka_UA Tuesday, November 22, 2016 1:44 PM
Tuesday, November 22, 2016 1:43 PM -
Hi there, the mentioned in comments vbs scripts don't work with Outlook 2013, but this PowerShell script written by me does xD
## Script for setting default address book view in Outlook for CU # # Input (const): # <$cAddrList> GUID for needed address list # Dump REG_BINARY value of '01023d06' from key # HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook\9207f3e0a3b11019908b08002b2a56c2\ # # Version 1.1 # (c)kMit 2016 # #AddressList string - 'BigBoxList' $cAddrList = 'fe000000000000000000000000000000000000ff01000000000100002f677569643d393536324239433038413232374234454236313831443644364236323635353100' #Outlook profiles registry path $cMSOProf = '\Software\Microsoft\Office\15.0\Outlook\Profiles\' $cMSORK01 = '\9207f3e0a3b11019908b08002b2a56c2' $cMSORSrc = '11023d05' $cMSORTrg = '01023d06' $cMSORK02 = '\0a0d020000000000c000000000000046' $cMSORBFM = '000b3d1c' # Get list of Outlook profiles $pList = (Get-ChildItem -Path HKCU:$cMSOProf -ErrorAction SilentlyContinue) # Check profile(s) if($pList -and (Get-ChildItem HKCU:$pList -ErrorAction SilentlyContinue)) { #Working on first profile $rKey = 'HKCU:'+$pList[0].Name.Substring(17) try { $is = (Get-ItemProperty -Path ($rKey+$cMSORK01)).$cMSORSrc #Make value and copy header $it = @(($cAddrList -split '([a-f0-9]{2})') | ForEach-Object {if($_) {[System.Convert]::toByte($_,16)}}) for($i=0;$i -lt 20;$i++) {$it[$i] = $is[$i+20]} #Write result Set-ItemProperty -Path ($rKey+$cMSORK01) -Name $cMSORTrg -Type Binary -Value ([byte[]]($it)) #Disable auto-select ('Choose automatically') Set-ItemProperty -Path ($rKey+$cMSORK02) -Name $cMSORBFM -Type Binary -Value ([byte[]](0,0)) } catch { break } }
Wednesday, December 28, 2016 1:45 PM -
Thanks for your contribution. For VBS to work you have to modify registry keys in script for office 2013. There is no big difference :)Thursday, December 29, 2016 9:00 AM
-
Not so simple, you have to modify not the registry keys but their valuesThursday, December 29, 2016 1:13 PM
-
Dear Dmitriy,
thanks for the great script as I've been looking for an exact same solution to this issue and how to handle it for a couple of thousand users. So far, so good.
I tried to implement, i.e. test drive, your script and came upon an issue. Right now I'm not quite sure what kind of value should be placed in $cAddrList. I dumped the corresponding Registry Key (i.e. my own Outlook Profile) to a .reg as well .txt file, copied the REG_BINARY value of the reg key 01023d06 into Notepad++, replaced all commas with blanks, and removed those as well, leaving me with a string looking like this:
00000000e91e6ef0b9d4c74da677e7525cefe2b701000000000100002f677569643d353044354446313631393843453734314239384637433745324532383936383900
Running your script then changes the supposed reg value, but it looks different after having been adjusted with your script.
I essentially receive an error stating that the Reg Path caanot be found:
"
PS C:\Users\AOLLISCH> C:\Scripts\Set-OutlookDefaultAddressBook.ps1
Get-ChildItem : Der Pfad "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\EnterpriseVault_3900_30676 HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\EnterpriseVault_4912_2807 HKEY
_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\EnterpriseVault_7012_16623 HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook" kann nicht gefunden werden, da er nicht vorhanden ist.Bei C:\Scripts\Set-OutlookDefaultAddressBook.ps1:30 Zeichen:30
+ if($pList -and (Get-ChildItem <<<< HKCU:$pList)) {
+ CategoryInfo : ObjectNotFound: (HKEY_CURRENT_US...rofiles\Outlook:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand"You could get in touch with me via Email
Thanks
Alex
Alexander Ollischer Diplom-Wirtschaftsinformatiker (FH) Citrix & Microsoft Certified Engineer (CCEA, CCEE, MCSA, MCSE, MCDBA, MCTS) Afontis IT+Services GmbH Baierbrunner Straße 15 81379 München Deutschland Telefon (089) 74 34 55-0 Fax (089) 74 34 55-55 mailto:a.ollischer@afontis.de http://www.afontis.de http://www.itganzeinfach.de Amtsgericht München, HRB 109 005 Geschäftsführer: Thomas Klimmer
- Edited by jaymz1102 Thursday, January 12, 2017 10:12 AM
Wednesday, January 11, 2017 4:22 PM -
Good day, Alexander! I changed my script to make it work with multiple Outlook profiles.
Now, in case of single profile, script works on it. If you have many profiles script selects the first one that matches $cMSOPFil constant.
## Script for setting default address book view in Outlook for CU # # Input (const): # <$cAddrList> GUID for needed address list # Dump REG_BINARY value of '01023d06' from key # HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook\9207f3e0a3b11019908b08002b2a56c2\ # # Version 1.2 # (c)kMit 2017 # #AddressList string - 'BigBoxList' $cAddrList = 'fe000000000000000000000000000000000000ff01000000000100002f677569643d393536324239433038413232374234454236313831443644364236323635353100' #Outlook profiles registry path $cMSOProf = '\Software\Microsoft\Office\15.0\Outlook\Profiles\' $cMSOPFil = '*Outlook' $cMSORK01 = '\9207f3e0a3b11019908b08002b2a56c2' $cMSORSrc = '11023d05' $cMSORTrg = '01023d06' $cMSORK02 = '\0a0d020000000000c000000000000046' $cMSORBFM = '000b3d1c' #\'' #Get list of Outlook profiles $pList = (Get-ChildItem -Path HKCU:$cMSOProf -ErrorAction SilentlyContinue) #Select profile - profile name doesn't matter if it's single, or the first one that matches $cMSOPFil if($pList) { if($pList.GetType().BaseType.Name -eq 'Array') { $pTarg = ($pList | ? {$_.Name -like $cMSOPFil})[0] } else { $pTarg = $pList } } #Change profile if($pTarg -and (Get-ChildItem HKCU:$pTarg -ErrorAction SilentlyContinue)) { $rKey = 'HKCU:'+$pTarg.Name.Substring(17) try { $is = (Get-ItemProperty -Path ($rKey+$cMSORK01)).$cMSORSrc #Make value and copy header $it = @(($cAddrList -split '([a-f0-9]{2})') | ForEach-Object {if($_) {[System.Convert]::toByte($_,16)}}) for($i=0;$i -lt 20;$i++) {$it[$i] = $is[$i+20]} #Write result Set-ItemProperty -Path ($rKey+$cMSORK01) -Name $cMSORTrg -Type Binary -Value ([byte[]]($it)) #Disable auto-select ('Choose automatically') Set-ItemProperty -Path ($rKey+$cMSORK02) -Name $cMSORBFM -Type Binary -Value ([byte[]](0,0)) } catch { break } }
PS a.ollischer@afontis.de - is it correct email?
mx1.afontis.de
Remote Server returned '550 5.1.1 Recipient address rejected: User unknown'
- Edited by DmitriyKiselev Friday, January 20, 2017 9:33 AM
- Proposed as answer by jaymz1102 Thursday, February 2, 2017 4:18 PM
Thursday, January 19, 2017 2:03 PM -
Dimitriy,
thanks for trying to get in touch with me and fixing the script to meet my requirements. Unfortunately I provided the wrong signature. Sorry for that.
I tinkered a little bit more with your script and adjusted it accordingly, i.e. getting the name of my default Outlook profile from registry prior to adjusting the corresponding registry key for the default address book view. Thus not requiring to cycle through all registry sub keys of HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles in the process.
What do you think? (2017-02-13: I removed the script due to an programming error mentioned by Dmitriy; thanks for pointing me in the right direction)
Alex- Edited by jaymz1102 Monday, February 13, 2017 3:56 PM
Tuesday, January 31, 2017 12:09 PM -
Dmitriy,
I tried the script in the field and stumbled upon Outlook 2010. Whereas Outlook 2013 and 2016 store their corresponding Profile information in the registry hive
- 'HKCU\Software\Microsoft\Office\<Version>\Outlook\Profiles\<DefaultProfileName>'
Outlook 2010 stores them in a totally different registry hive:
- 'HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\<DefaultProfileName>'
Pls have a look at http://stackoverflow.com/questions/13502664/which-registry-keys-determine-the-outlook-profile
"Profiles are stored on per-version basis only starting with Outlook 2013 (15). Prior to that the profiles are in HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles"
Guess what? I tried to adjust your script in order to modify the Outlook 2010 specific registry key '01023d06' as it stores the default address book view here as well, just a different registry hive.
But it won't work. The value gets modified but when launching Outlook 2010 and opening die address book, GAL keeps popping up as the default address book to show.
I changed it manually, closed Outlook 2010, and examined to registry value for '01023d06', and it changed. I copied the value to my script, changed the default address book view to something else, verified the registry key has changed, ran the script, verified that it returned to the value prior to my manuel change, all fine! But Outlook 2010 won't reflect the changed value in the address book GUI.
Anything I missed with Outlook 2010?
Alex
- Edited by jaymz1102 Thursday, February 2, 2017 3:59 PM
Thursday, February 2, 2017 3:58 PM -
Alexander,
I think, you broke it ^(
#Make value and copy header $it = @(($cAddrList -split '([a-f0-9]{2})') | ForEach-Object {if($_) {[System.Convert]::toByte($_,16)}}) #for($i=0;$i -lt 20;$i++) {$it[$i] = $is[$i+20]}
By commenting the last line above you don't get the correct header, so the value of $cAddrList is correct ONLY for one user and ONLY on this PC (I mean the user@PC profile from which you copied $cAddrList value).
There is no HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\ key on any installation of Office 2013 or 2016 - it's deprecated since Outlook 2010.
To avoid misunderstanding, this script has been designed specifically for Outlook 2013 (and for Outlook 2016 with minimal replacements), if you need to accomplish this task for Outlook 2010 you don't need to use it.
PS You are free to use or modify the original script, but please do not publish broken and untested solutions.. including this 'Version 1.2' scriptThursday, February 9, 2017 4:25 PM -
Dmitriy,
I have the same problem with Outlook 2016. Got value from reg-dump, insert hex of 01023d06 in script $cAddrList, but get another value in register after script running.
Monday, February 13, 2017 9:10 AM -
Dmitriy,
thanks for your reply and helping me debug my "version 1.2". I'll remove the broken version and will just keep it for myself and will try to adjust it for Outlook 2010 installations.
Anyways, you and your script have been a great help, I appreciate it very much!
Again, many thanks!
Alex
- Edited by jaymz1102 Monday, February 13, 2017 3:55 PM
Monday, February 13, 2017 3:55 PM -
Anton,
For working with Outlook 2016 you just need to change that line:
$cMSOProf = '\Software\Microsoft\Office\15.0\Outlook\Profiles\'
to
$cMSOProf = '\Software\Microsoft\Office\16.0\Outlook\Profiles\'
And, of course, dump cAddrList value from
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles\<Profile Name>\9207f3e0a3b11019908b08002b2a56c2\
- Edited by DmitriyKiselev Thursday, February 16, 2017 5:05 PM
Thursday, February 16, 2017 4:46 PM -
Alex,
You're welcome! There are plenty solutions for Outlook 2010 - this topic started from O2010 and you may take a look at this TechNet topic - Centrally set settings in the addressbook
Have fun xD
Thursday, February 16, 2017 5:03 PM -
Thanks, but I am already did this.
My value changes after powershell script running.
1. Make export of registry branch
2. Got 01023d06 value from file, remove commas and copy hex value to $cAddrList
3. Running script
4. Look in registry in 01023d06 dword key - value is defferent from mine.
BUT if I comment those, I got my original right value.
Maybe I need to change something from dumped registry value?
#Make value and copy header $it = @(($cAddrList -split '([a-f0-9]{2})') | ForEach-Object {if($_) {[System.Convert]::toByte($_,16)}}) for($i=0;$i -lt 20;$i++) {$it[$i] = $is[$i+20]}
- Edited by Anton Olifir Friday, February 17, 2017 7:52 AM
Friday, February 17, 2017 7:51 AM -
Anton,
Just now I had deployed new VM with windows 8.1, installed MSO 2016, opened Outlook, opened Address Book - Global Address List shown, then closed Outlook and ran the script, before this I've dumped value of cAddrList from my current workstation (Windows 10, MSO 2013). So, next time I opened Outlook, the Address Book shows me not the Global Address List but the same custom address list as on my workstation.
I'm not sure what are you trying to accomplish.. could you please email me registry dumps before and after running script and also the string from script setting $cAddrList to dmitriy.kiselev [at] bigbox.ru ?
PS Feel free to use Russian if it's your native language
- Edited by DmitriyKiselev Monday, February 27, 2017 5:16 PM
Monday, February 27, 2017 5:00 PM -
-
Anybody has it reliably working on 2016/365?
I can get sometimes ?
Seb
Friday, May 10, 2019 2:54 PM -
Hi Dmitriy,
Your script works perfectly. Thank you for that.
Is it also possible to include functionality to manipulate the "Outlook Address Book search order"?
This is also a REG_BINARY value.
Hoping to hear from you.
Cheers,
Friday, November 1, 2019 12:59 PM -
Look 2 post above...Saturday, November 2, 2019 9:02 AM
-
Thanks for the reply.
Any idea how to set a custom value here instead of just Enable Start with Global Address List:or Enable Start with contact folders?
Whenever I use a custom address list the value of 00033d1b doesn't change.
Thursday, November 14, 2019 1:14 PM