Skip to content

A GALSync powershell script

Here is a script I wrote to do a simple GAL synchronization between two Exchange organizations. The script finds the mail-enabled  users in one domain, and creates contacts for them in the other domain. Existing contacts will also be updated and deleted as needed.


There was a bug in the original script where I had forgotten to populate mailNickname. I have now done so, adding a “c-” to the front of it as a completely optional convention to avoid conflicts.

Update 2

Several people have commented below about needing to enable the contacts in Exchange after creation. I have used the modifcations posted by Mark in the comments to make a new version that I hope will work better with 2007 and 2010, though I have only tested it with 2010. Both versions are linked below, and please keep adding your comments and modifications.

The Script

Now I have two versions the scripts have been moved off to seperate pages. Follow the links below.

Version 2 Added the Update-Recipient command for Exchange 2007 (through local powershell) and Exchange 2010 (through remote powershell).
Version 1 Original version that uses the ActiveDirectory powershell module to create the contact objects.

Other people’s versions

Modified for Distribution Lists:

{ 78 } Comments

  1. David Lundell | May 20, 2010 at 4:23 pm | Permalink

    I suppose without an IIFP edition of FIM people have to find another free way to support this need.

  2. Carol | May 20, 2010 at 5:34 pm | Permalink

    Am I becoming repetitive? 😉

  3. Eric | June 10, 2010 at 5:46 pm | Permalink

    Very nice! How would I modify this script for a one-way sync? DOMAIN2 Users –> DOMAIN1 Contacts only?


  4. Carol | June 10, 2010 at 7:31 pm | Permalink

    Hi Eric. That is simple enough – you see at the bottom of the script I have called the SyncContacts function twice – once for each domain? Just call it once.

  5. Eric | June 11, 2010 at 5:21 pm | Permalink

    Great, thank you Carol!

  6. Nigel Harvey | August 23, 2010 at 3:30 pm | Permalink

    Tried running this – nogo on Exchange server – nogo on DC – currently loading Exchange tools to DC and will try again. RSAT tools loaded in all cases … Any thoughts in the mean time much appreciated 😀


  7. Carol | August 23, 2010 at 3:36 pm | Permalink

    I am not running this on an Exchange server or on a DC – just on a regular member server with the AD powershell plugin available.

    Any errors?

  8. Nigel Harvey | August 23, 2010 at 3:50 pm | Permalink

    Sorry :-( any clues? E2k7SP2 on Win2k8StdSp2 returns:

    PS C:\> .\GALScript.ps1
    The term ‘get-module’ is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
    At C:\GALScript.ps1:179 char:16
    + if(@(get-module <<<< | where-object {$_.Name -eq "ActiveDirectory"} ).count -eq 0) {import-module ActiveDirectory}
    The term 'import-module' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
    At C:\GALScript.ps1:179 char:93
    + if(@(get-module | where-object {$_.Name -eq "ActiveDirectory"} ).count -eq 0) {import-module <<< DOMAIN2 Contacts

    DOMAIN2 Users –> DOMAIN1 Contacts
    The term ‘Get-ADObject’ is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
    At C:\GALScript.ps1:64 char:26
    + $colUsers = Get-ADObject <<< stop-transcript
    Transcription has not been started. Use the start-transcript command to start transcription.
    Stop-Transcript : An error occurred stopping transcription: The console host is not currently transcribing.
    At line:1 char:15
    + stop-transcript <<<

  9. Nigel Harvey | August 23, 2010 at 3:52 pm | Permalink

    Bit of overlap there — which AD plugin please, the QAD one?


  10. Nigel Harvey | August 23, 2010 at 4:05 pm | Permalink

    Ah … You mean the Windows2k8R2/Windows7 one that loads with the RSAT tools …

    try and try again … :-)

  11. Nigel Harvey | August 23, 2010 at 4:16 pm | Permalink

    It now thinks source user password is Null and finds no users in the source domain – this from a Windows7x64 pc on domain using either domain access account set up when I get a 2-box challenge come up when I run it. I’m trying to find a Win2k8 server with ADWeb services running on it …


    PS D:\scripts> .\GALScript.ps1
    DOMAIN1 Users –> DOMAIN2 Contacts

    DOMAIN2 Users –> DOMAIN1 Contacts
    ConvertTo-SecureString : Key not valid for use in specified state.
    At D:\scripts\GALScript.ps1:61 char:64
    + $password = get-content $sourcePWFile | convertto-securestring <<<<
    + CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.Conv

    New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process argument because the value of argument "pa
    ssword" is null. Change the value of argument "password" to a non-null value."
    At D:\scripts\GALScript.ps1:62 char:27
    + $sourceCred = New-Object <<<< -Typename System.Management.Automation.PSCredential -Argumentlist $sourceUser,$pa
    + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

    Get-ADObject : Unable to contact the server. This may be because this server does not exist, it is currently down, or i
    t does not have the Active Directory Web Services running.
    At D:\scripts\GALScript.ps1:64 char:26
    + $colUsers = Get-ADObject <<<

  12. Carol | August 23, 2010 at 4:29 pm | Permalink

    You need to create the secure files as descibed in the comments at the top of the script, and also they must be secured with the account that you then run the script with. The idea is that you can store the password in a secure file rather than hardcoding it in the script.

    I suggest you create your cred file and then try and run some of the cmdlets manually using it – such as get-adobject. Once you can do that successfully with the cred file and with the account you mean to run the script with, then the script should work.

  13. Nigel Harvey | August 24, 2010 at 1:16 pm | Permalink

    You also need AD Web Services on a Win2k8R2 DC to target the ActiveDirectory module so this script only seems to work for two Windows 2008 R2 controlled domains.

    Any thoughts/comments?

  14. Nigel Harvey | August 24, 2010 at 1:20 pm | Permalink

    … and of course ‘import-module activedirectory’ needs to work 😉

  15. Nigel Harvey | August 24, 2010 at 1:29 pm | Permalink

    PS Storming work here by the way! Despite the fact I can’t get it to run, it’s the first time I’ve found anyone take on anything like this!! It would seem that despite Microsft lauding the programmability of AD/Exchange using Powershell that they don’t want us to use it for anything worthwhile. It remains the realm of die-hards and technical staff from other areas to even try and come up with a solution like this.

    Now to see if I can get to something similar in QAD Powershell for pre-2k8R2 bodies …

  16. Carol | August 24, 2010 at 2:06 pm | Permalink

    It’s possible. The two domains I’m running it against have Windows 2008r2 DCs in them. It doesn’t mention such a requirement in that Scripting Guys page I linked to, but of course that doesn’t mean it’s not there.

    You could probably re-write the script using the Quest AD cmdlets. Alternatively it is possible to create AD objects with powershell using ADSI – just not as neat as with this plugin.

    And thanks! :)

  17. Nigel Harvey | August 27, 2010 at 12:29 pm | Permalink

    Getting there slowly … QAD command set is a bit twisty and I had to filter using LDAP rather than OLAP so someone will have an opportunity to clean some things up.

    Most of the commands are transferring ok but I’m restricted to doing it in my lunchtime hance the phenominal speed (ha…)

    PS why use target address instead of mail when working with Contacts?

  18. Tom | September 23, 2010 at 5:23 am | Permalink

    Hello Guys,

    I have a situation where Forest 1: Windows 2008 SP2 w/Exchange 2010 and Forest 2:Windows 2003 R2 w/Exchange 2003. Cross forest migration. Ran into a problem with native tool support on GAL Sync and F/B. IIFP does not work and same goes to InterOrg. Decided to try this script. But unfortunately, it requires Windows 2008 R2 DC. With above problem, is there a chance that 3rd forest promoted and link with transitive forest trust and this script is executable?

  19. Carol | September 23, 2010 at 7:25 am | Permalink

    If you can’t get a 2008r2 DC into the 2003 forest (doesn’t require a functional level upgrade or anything) then the only thing I can suggest is re-writing the script so it uses the powershell v1 ADSI methods instead. They’re a bit more long winded but the result should be the same.

  20. Nigel Harvey | October 1, 2010 at 1:23 pm | Permalink

    Hi Tom/Carol … This shouldn’t need a 3rd forest as long as the (unfortunately re-written in Powershell) script can hit both domains using LDAP from the Windows 2008 SP2 end. MIISFP doesn’t work against W2k8 and FIM GalSynch process is chewy. Good luck.

  21. Ron | November 19, 2010 at 9:00 pm | Permalink

    Hi Carol. Awesome script! Thanks for sharing it!

    You don’t need Server 2008 R2 in both forests. You can download Active Directory Management Gateway Service for Server 2003 and 2008 from Microsoft ( Read the entire article because there are prerequisites and it may require a reboot.

    The script creates Active Directory contacts. If you want them to show up in the Global Address List and Offline Address Book, you need to mail enable the contacts. To do that I added this line after the New-ADObject command in the ADDS loop.

    Get-Contact $user.displayName | foreach {Enable-MailContact $_ -externalEmailAddress $_.windowsEmailAddress.toString()}

    Then I ran the script from the Exchange Management Shell. It worked perfectly between a Server 2003 forest and a Server 2008 R2 forest. The only thing I am not sure about yet is the updating part.

  22. Carol | November 20, 2010 at 7:16 am | Permalink

    Hi Ron – thanks that’s great! I’m glad it works with 2003 after all.

  23. Rob | December 13, 2010 at 9:30 pm | Permalink

    Has anyone tried this for use with Live@edu or outlook online?

    I am looking for an alternative to ILM 2007 or FIM for syncing on site AD with outlook online. I want it to create mailboxes and sync passwords.

  24. Arne Verstraete | March 3, 2011 at 2:40 pm | Permalink

    We have two forest that has an two way trust. In both forest the domain controllers are allwindows 2008 R2 servers. The syncs users -> contacts from domain1 to domain2 works. But when users want to send an email to the contact that they find in the GAL they get an error. Unable to relay. When i look into the contact details even with adsi edit everthing looks ok. Have this in two place’s a freshly setup test enviroment and our live “production” enviroment. Are there other people who has the same issue and what can i do against it. I want to make the contacts usable in outlook and not only viewable in “active directory users and computers”.

  25. Carol | March 3, 2011 at 7:06 pm | Permalink

    To start with make sure the contacts appear in the Exchange management console. If they do then the contacts are created correcty and you need to look to your Exchange settings.

  26. Arne Verstraete | March 4, 2011 at 6:48 am | Permalink

    they appear in the exchange management console. What settings can this be?

  27. Arne Verstraete | March 4, 2011 at 7:50 am | Permalink

    I get this failure message back when i send a test mail to an imported contact.

    Diagnostische gegevens voor beheerders:

    #550 5.1.1 RESOLVER.ADR.ExRecipNotFound; not found ##

    Oorspronkelijke berichtkoppen:

    Received: from ([]) by ([]) with mapi; Fri, 4 Mar 2011
    08:32:05 +0100
    Content-Type: application/ms-tnef; name=”winmail.dat”
    Content-Transfer-Encoding: binary
    From: Arne Verstraete
    To: ipmonitor
    Subject: test
    Thread-Topic: test
    Thread-Index: AcvaPj5da7PNA7qdTj2Gx7Q9hT/n8A==
    Date: Fri, 4 Mar 2011 08:32:03 +0100
    Accept-Language: nl-BE, en-US
    Content-Language: en-US
    MIME-Version: 1.0

  28. Carol | March 4, 2011 at 11:44 am | Permalink

    I suggest you create a contact manually through Exchange and see if you get the same problem. If it works then inspect both contacts (the one created manually and the one created with this script) using ADSIEdit to see what the differences are. It’s possible you may need to modify the script to either add some extra attributes, or to run an update-recipient after the contact creation. I haven’t found that necessary but I’ve only run this in one environment. The script is posted here as an example only and you need to adjust it for your own environment.

  29. Arne Verstraete | March 4, 2011 at 2:42 pm | Permalink

    When i create a contact through Exchange I do not have the same problem. But i will test with the update-recipient cmdlet. I keep you informed. Thanks for the help in advance

  30. Jon | March 8, 2011 at 10:02 pm | Permalink

    awesome script! Any reason why I couldn’t lose the credentials portion of this script so that they are not stored in a text file, but stored with the task service? I know there are a few things *cough* that need to be done to enable PS1 files to be ran from EMS as a scheduled task, but I am pretty sure that would work, no?

  31. Carol | March 9, 2011 at 6:34 am | Permalink

    I’m sure you could. The script only uses AD methods deliberately to try and simplify the permission side of things, though a couple of people have commented that they needed to run enable-mailcontact afterwards, which would need the exchange plugins as well as exchange recipient admin, so I guess it depends on the environment. All you can do is try!

  32. Guruprasad | March 10, 2011 at 8:47 am | Permalink

    what explicity exchange permisssion is required to run this script?

  33. Carol | March 10, 2011 at 9:29 am | Permalink

    The script as written requires no exchange admin permission because it is only creating AD objects. However some people have mentioned needing to run enable-mailcontact after the contact has been created. If you find you need to do this then you will also need to load the Exchange powershell snapin and the account will need Recipient Admin permissions.

  34. Arne Verstraete | March 10, 2011 at 1:01 pm | Permalink

    I solved my problem just added the two lines below in the ADDS loop just after New-ADObject

    Get-MailContact $User.displayname | foreach {Disable-Mailcontact $_ -Confirm:$false}
    Get-Contact $user.displayName | foreach {Enable-MailContact $_ -externalEmailAddress $_.windowsEmailAddress.toString()}

  35. Guruprasad | March 11, 2011 at 12:45 pm | Permalink

    Thank you Carol for clarification.

    I am trying to create contacts in my domain (target) of users who are residing from one particular OU only in the remote domain (source) How I can achieve this? Currently the script is creating contacts of all users from the source domain.

    Thanking you,

  36. Carol | March 11, 2011 at 1:07 pm | Permalink

    You need to modify the line that starts “$colUsers =Get-ADObject…” to add a -SearchBase to the Get-ADObject command. See for more info about Get-ADObject.

  37. Guruprasad | March 11, 2011 at 1:28 pm | Permalink

    Thanks Carol, but when i added -SearchBase as below
    $colUsers = Get-ADObject -Filter $strSelectUsers -SearchBase ‘OU=Test,DC=xyz,DC=com’ -Properties * -Server $sourceDC -Credential $sourceCred

    I am getting error as it is only works for and not

    please clarify.

    thanking you, guruprasad.

  38. Carol | March 11, 2011 at 1:43 pm | Permalink

    Then you need to modify the SyncContacts function so you can pass the searchbase as a parameter.

  39. Guruprasad | March 11, 2011 at 2:33 pm | Permalink

    Finally Carol I am running individual scripts respective to each domain.

    Thank you for all the replies and the great work.

    Allow me to get back to you in case if I require your help.

    Thanking you, Guru.

  40. Krishna | March 17, 2011 at 8:24 am | Permalink

    Hi Carol,

    As Guruprasad said the script will find the users in Domain A and create the contacts for the users in Domain B. We can modify the script and allow to find users in only one OU and create the contacts for users only in the OU. My question is I have a dynamic distribution list which contain some users as member. The script need to find all the dynamic distribution list members and create contacts only for those users. How to achieve this. If I directly went to EMC I am able to get all members using the below command.

    $group = Get-DynamicDistributionGroup –identity “AllStaff”

    Get-Recipient –RecipientPreviewFilter $group.RecipientFilter

    How to insert the above commands in script?


  41. Mark | March 23, 2011 at 2:59 pm | Permalink

    Great Script Carol!

    I’m working in test environment to find the best solution for our company merger and came accross your script.

    I have an Exchange 2010 server in each forest.

    FIM2010 had been attempted, but I didn’t get far with it before I found your script and decided to try it out.

    When I ran the GALSync script the contacts were created, but not mail enabled (As Ron stated.. Unfortunately I didn’t see his comments until today)

    I was able to substitue remote Exchange 2010 powershell commands to create mail enabled contacts and wanted to share my tweaks in case anyone was interested. These tweaks only modified the ADD functionality, leaving the DELETE and UPDATE sections alone.

    Added the following two variables to the Global Definitions section:

    I modified the PARAM line of the SyncContacts Function to add $targetURI:
    PARAM($sourceDC, $sourceUser, $sourcePWFile, $targetDC, $targetUser, $targetPWFile, $targetOU, $targetURI)

    The New-ADObject line was commented out in the ADDS line and the following thre lines were added:
    $SO=New-PSSessionOption -SkipCACheck -SkipCNCheck –SkipRevocationCheck –ProxyAccessType None

    $PSSession1=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $targetURI -Credential $targetCred -SessionOption $SO

    invoke-Command -Session $PSSession1 -ScriptBlock{param ($User,$targetOU,$targetaddress) New-MailContact -Name $User.displayname -OrganizationalUnit $targetOU -ExternalEmailAddress $targetAddress} -ArgumentList $User,$targetOU,$targetaddress

    In the MAIN section the SyncContacts lines were modified to add the $targetURI and $sourceURI parameter
    SyncContacts -sourceDC $DOMAIN_1 -sourceUser $USER_1 -sourcePWFile $PWFILE_1 -targetDC $DOMAIN_2 -targetUser $USER_2 -targetPWFile $PWFILE_2 -targetOU $OU_CONTACTS_2 $targetURI

    SyncContacts -sourceDC $DOMAIN_2 -sourceUser $USER_2 -sourcePWFile $PWFILE_2 -targetDC $DOMAIN_1 -targetUser $USER_1 -targetPWFile $PWFILE_1 -targetOU $OU_CONTACTS_1 $sourceURI

    I was also able to get Free/Busy shared between forests using the Microsoft “Configure the Availability Service for Cross-Forest Topologies” technote.

    Who Needs FIM 2010 :)

    Thanks Again Carol

  42. Carol | March 23, 2011 at 3:16 pm | Permalink

    Thanks very much for this Mark. I have merged the two comments you made so that the line you mentioned is correct in your orignial post. I will update the script in the post as soon as I get a chance to test your modifications. I was hoping to get away with not having to load the Exchange plugin and give the account Exchange permissions, but there you go, can’t have everything. Thanks again!

  43. Mark | March 23, 2011 at 5:42 pm | Permalink


    No problem.

    The Exchange module shouldn’t be required locally on the GALSync Server as the commands are run remotely on the Exchange server.

    In order to get the remote Exchange powershell to work I needed to run a couple Exchange Management Shell commands on the Exchange server in the remote forest. These commands will need to be run for the GALSync service account in each forest on the appropriate Exchange server.

    These commands give the GALSync service account in each forest the appropriate permissions

    To add the GALSync service account to the Recipient Management Role Group:
    add-rolegroupmember “Recipient Management” -member GALSync

    To grant the service account permission to use PowerShell remotely on the remote forest Exchange server:
    set-user -identity “GALSYNC” -RemotePowerShellEnabled $True



  44. Mark | March 23, 2011 at 5:59 pm | Permalink


    Windows Authentication also needs to be enabled and Anonymous Authentication needs to be disabled on the PowerShell virtual directory in IIS on the Exchange Servers.

    If you can combind this with the previous post that would be great

  45. Mark | March 24, 2011 at 2:28 pm | Permalink

    I was able to tweak the modified GALSync Script to create X500 addresess for the contacts to mitigate potential issues with replies to old emails. I also changed the ADD section to be more like Carol’s original with the Alias and disabling the automatic application of address policy on the contact.

    Here’s my current ADDS section:

    ### ADDS

    foreach ($user in $colAddContact)
    write-host “ADDING contact for ” $user.mail

    $targetAddress = “SMTP:” + $user.mail

    $X500Address = “X500:” + $user.LegacyExchangeDN

    $alias = “c-” + $user.mail.split(“@”)[0]

    $hashAttribs = @{‘targetAddress’ = $targetAddress}
    $hashAttribs.add(“mailNickname”, $alias)

    foreach ($attrib in $arrAttribs)
    if ($user.$attrib -ne $null) { $hashAttribs.add($attrib, $user.$attrib) }
    ### Original AD Contact Creation
    ### New-ADObject -name $user.displayName -type contact -Path $targetOU -Description $user.description -server $targetDC -credential $targetCred -OtherAttributes $hashAttribs

    # Create Remote PowerShell Session
    $SO=New-PSSessionOption -SkipCACheck -SkipCNCheck –SkipRevocationCheck –ProxyAccessType None
    $PSSession1=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $targetURI -Credential $targetCred -SessionOption $SO

    # Create Contact through the Remote PowerShell Session
    invoke-Command -Session $PSSession1 -ScriptBlock{param ($User,$alias,$targetOU,$targetaddress) New-MailContact -Name $User.displayname -Alias $alias -OrganizationalUnit $targetOU -ExternalEmailAddress $targetAddress -PrimarySmtpAddress $user.mail} -ArgumentList $User,$alias,$targetOU,$targetaddress

    # Add X500 Addressing
    $CurrentContact=invoke-Command -Session $PSSession1 -ScriptBlock{param ($User) Get-MailContact -identity $User.displayname} -ArgumentList $User
    $CurrentContact.EmailAddresses += $X500Address
    invoke-Command -Session $PSSession1 -ScriptBlock{param ($CurrentContact,$User) Set-MailContact -EmailAddresses $CurrentContact.EmailAddresses -identity $User.displayname} -ArgumentList $CurrentContact,$User

    # Close Remote PowerShell Session
    Remove-PSSession $PSSession1



  46. Guruprasad | April 6, 2011 at 12:42 pm | Permalink

    Hi Carol,

    The script is working just fantastic.

    When we enumerated 16000+ users it took 4 hours. Does the script behaviour remains same everytime it executes or it reads only delta changes and update the contacts which should reduce the executing time from 4 hours?

    If it does not update delta changes what is the work around.

    first time execution for 16000 user objects – took 4 hours
    second time only 100 existing user objects’ attributes changed – will it take 4 hours or less time?

    Rgds, Guruprasad.

  47. Carol | April 6, 2011 at 2:16 pm | Permalink

    Wow so many users! I haven’t run it on such large numbers myself. The script will check through every contact the next time but should only update it if there’s a change to be made. I don’t know what the time difference will be but maybe you could report back.

  48. Rick | April 11, 2011 at 11:31 pm | Permalink

    I’m having a tricky time creating the secure files..

    running “read-host -assecurestring | convertfrom-securestring | out-file C:\scripts\filename.txt”

    gets me this:

    ConvertFrom-SecureString : Cannot process argument because the value of argument “SecureString” is invalid. Change the value of the “SecureString” argument and run the operation again.
    At line:1 char:53
    + read-host -assecurestring | convertfrom-securestring <<<< | out-file C:\scripts\filename.txt
    + CategoryInfo : InvalidArgument: (:) [ConvertFrom-SecureString], PSArgumentException
    + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.ConvertFr omSecureStringCommand

    Any assistance?

  49. Rick | April 12, 2011 at 1:02 am | Permalink

    Now I’ve got

    Get-ADObject : Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running.
    At C:\ittools\GALSYNC.PS1:79 char:26
    + $colUsers = Get-ADObject <<<< -Filter $strSelectUsers -Properties * -Server $sourceDC -Credential $sourceCred
    + CategoryInfo : ResourceUnavailable: (:) [Get-ADObject], ADServe rDownException
    + FullyQualifiedErrorId : Unable to contact the server. This may be becaus e this server does not exist, it is currently down, or it does not have th e Active Directory Web Services running.,Microsoft.ActiveDirectory.Management.Commands.GetADObject

    No users found in source domain!

    But there is that service there.. Any clues?

  50. Carol | April 12, 2011 at 5:29 am | Permalink

    Make sure that you have everything working on the powershell side before trying to run the script. Run a powershell session as the user you will use to run the script, import the module (import-module ActiveDirectory), and then make sure you can run Get-ADObject correctly. Note also that the script uses the domain name to find a DC so DNS has to be working properly.

  51. Rick | April 13, 2011 at 12:45 am | Permalink

    Ah, it turned out it was using a 2008 GC for DNS that wasn’t updated with the relevant patches.

    Now that it is, I’m getting a different error. I’m assuming the “No contact found for” is normal.

    ….. (many more above)
    No contact found for
    No contact found for

    Updating using DC
    ADDING contact for
    New-ADObject : Directory object not found
    At C:\ittools\GALSYNC.PS1:155 char:15
    + New-ADObject <<<< -name $user.displayName -type contact -Path $targetOU -Description $user.description -server $targetDC -credential $targetCred -OtherAttributes $hashAttribs
    + CategoryInfo : ObjectNotFound: (cn=Glenn Opray,…C=apisec,DC=com:String) [New-ADObject], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.NewADObject

    New-PSSession : Cannot validate argument on parameter 'ConnectionUri'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.
    At C:\ittools\GALSYNC.PS1:168 char:111
    + if ($PSSession -eq $null) {$PSSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri <<<< $targetURI -Credential $targetCred -SessionOption $SO}
    + CategoryInfo : InvalidData: (:) [New-PSSession], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.NewPSSessionCommand

    Invoke-Command : Cannot validate argument on parameter 'Session'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.
    At C:\ittools\GALSYNC.PS1:169 char:28
    + Invoke-Command -Session <<<< $PSSession -ScriptBlock{param ($alias,$targetDC) Update-Recipient -Identity $alias -DomainController $targetDC} -ArgumentList $alias,$targetDC
    + CategoryInfo : InvalidData: (:) [Invoke-Command], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeCommandCommand is Domain_1 is Domain_2

  52. Carol | April 13, 2011 at 5:05 am | Permalink

    It’s probably just that something doesn’t have a value. There isn’t a whole lot of error checking in this script. Try opening it in PowerGUI so you can run one line at a time and check variable values.

  53. Ronnie | April 21, 2011 at 1:07 pm | Permalink

    Whats missing in the V2 script is something to set the $URI_2 variable.

  54. Carol | April 23, 2011 at 1:58 pm | Permalink

    I’ve added the extra declarations. Thanks

  55. cy | May 31, 2011 at 11:26 am | Permalink

    Hi Carol, great script. I got it working between a W2k8DC/E2k7 and a W2k8R2DC/E2010 forest. But I have one little problem.

    Say I already have a contact in E2010, Ext in OU1. A mailbox in E2k7 has smtp address When I run the script and specify the destination OU as OU2, it will create a contact with the same external smtp address.
    If I were to manually create 2 contacts with the same ext email address using EMS, it will fail.
    How can I have the contact creation fail using your script if the same Ext smtp address was detected?

  56. Carol | May 31, 2011 at 11:41 am | Permalink

    The script assumes all contacts are in the OU you specified at the top, and is therefore both searching and provisioning to the same OU. Your options are to put all your contacts from the other forest in that OU (including pre-existing ones), or to rewrite the “Enumerate Contacts” part of the script so it uses a different OU as the search root – eg., the root of the domain. Be careful though – you may also need to modify the “Find Contacts to Delete” section so it doesn’t delete contacts you still wanted.

  57. cy | June 1, 2011 at 3:30 am | Permalink

    Thanks for the reply, I will try that out.
    BTW, why are you appending c- to the alias of the imported contacts?


  58. Carol | June 1, 2011 at 5:09 am | Permalink

    Prefixing, not appending. And I explained that up the top.

  59. Sandy | June 25, 2011 at 5:16 pm | Permalink

    Hi Carol,

    I found very interesting this script.I am new to this. In the video bat is running intead of ps1.Can you please explain me?..

    Also which is the write script to enble the contacts in source domain ie- version1 or version2

  60. Sandy | June 25, 2011 at 5:17 pm | Permalink

    Also which is the right script to enble the contacts in source domain ie- version1 or version2

  61. Carol | June 25, 2011 at 8:49 pm | Permalink

    Version 2 is your best bet for Exch 2007/2010.

  62. Sandy | June 26, 2011 at 4:09 pm | Permalink

    Thanks Carol.Is it possible to get Galsync-curuIT-v3_bat.txt? I am unable to see the files in the mentioned link.

  63. Sandy | June 26, 2011 at 4:26 pm | Permalink

    Sorry for the confusion.. I have got the links from the following site (Gal sync video)

  64. Carol | June 26, 2011 at 5:30 pm | Permalink

    This has nothing to do with my script.

  65. Rick | July 20, 2011 at 12:00 am | Permalink

    Thanks so much for this script, it’s been working like a charm ever since I found it back in April.
    One question, how difficult would it be to adapt it to transfer across mail enabled distribution groups?

  66. Carol | July 20, 2011 at 2:58 am | Permalink

    It shouldn’t be hard. You could try changing the definition for $strSelectUsers so it selects the DLs as well. If that doesn’t work then just define $strSelectDLs with the appropriate lookup string, and loop through again. And if you do post your modified script somewhere be sure to send me the link :-)

  67. Peter | February 7, 2012 at 8:24 am | Permalink

    Just an FYI: in Google Chrome you can only see the comments, not the actual blog article. Thought you’d want to know this.

  68. Scott Hahn | February 13, 2012 at 8:35 pm | Permalink

    I am working on a project that is 3 way

    Before I go too far I want to make sure this script definitely supports Exchange 2003 as both a source and a target?


  69. Mark D | February 17, 2012 at 2:15 am | Permalink

    I’m having problems with the DNS part,

    I can seem to be able to GET-ADDOMAINCONTROLLER from DOMAIN A to DOMAIN B, i tried adding a new zone namely DOMAIN B. but to no avail.

    i can surely ping DOMAIN A to DOMAIN B and vice versa.

    Get-ADDomainController : The specified domain either does not exist or could not be contacted
    At C:\scripts\galsync.ps1:70 char:39
    + $objSourceDC = Get-ADDomainController <<<< -Discover -DomainName $sourceDomain
    + CategoryInfo : ObjectNotFound: (:) [Get-ADDomainController], ADException
    + FullyQualifiedErrorId : GetADDomainController:BeginProcessingOverride:DiscoverDC:1355,Microsoft.ActiveDirectory.

  70. Carol | February 17, 2012 at 2:27 am | Permalink

    You could hard code your domain names. Note I don’t give technical support on these scripts – they’re presented as-is (and FREE) and you will probably need to modify for your environment.

  71. Mark D | February 17, 2012 at 2:30 am | Permalink

    got it.. I really appreciate the code,. thank you! :)

  72. Mitch B | March 1, 2012 at 3:04 am | Permalink


    I want to try to create mailbox instead of contacts. I try to change some of the code to find for existing user instead of contact and changing the -type to “mailbox”. But I cannot get it to work. I am fairly new to powershell scripting and am just experimenting.

    Any suggestions?

  73. John | March 2, 2012 at 7:05 am | Permalink

    Can this work with Exchange 2003 -> 2010?

  74. Rob | May 29, 2012 at 3:53 pm | Permalink

    Will this script (creating the mail enabled contacts in both forests) enable me (in forest A) to see free busy info for those users that are in the remote forest (Forest B). Or does this simply put an entry in the GAL for the users in the remote forest by creating a “dot forward”? thanks

  75. Carol | May 29, 2012 at 10:02 pm | Permalink

    That’s right it’s a GAL sync not a free-busy sync.

  76. Pavel | June 27, 2012 at 3:24 pm | Permalink

    Hi, I got the following error, help to cope with it

    Both controllers domera running Windows Server 2008 r2

    PS C:\Scripts> C:\Scripts\GalSync.ps1
    You must provide a value expression on the right-hand side of the ‘-‘ operator.
    At C:\Scripts\GalSync.ps1:89 char:14
    + $targetCred – <<<< Properties targetAddress
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

  77. Pavel | June 27, 2012 at 4:13 pm | Permalink

    *domera = domain

  78. Bill Z | August 1, 2012 at 1:19 pm | Permalink

    Any thoughts on enabling this to do the same for Linked Accounts in an Account forest? My environment has a mixture of user accounts in an Exchange Resource Forest and linked accounts from a trusted forest.


cheap viagra 50mg where to buy xenical in south africa buy cialis online fast delivery buy generic cialis 2.5mg order viagra 5 mg overnight order levitra uk buy kamagra now is it safe to order nolvadex online buy accutane online bodybuilding order lasix can you buy valtrex in stores buy viagra in store uk buy cheap citalopram buy american cialis where to buy proscar in australia canadian maxalt diet pills without a perscription purchase premarin no scams purchase lisinopril on line no rx buy maxalt from usa without a perscription lisinopril effects buy lisinopril with american express finasteride online cytotec no prescription needed buy finpecia online australia buy cheap premarin under without rx purchase premarin free consultation no prescriptions needed for maxalt buy prednisone with no prescription order seroquel online buy generic seroquel canada finpecia buy generic requip canada finpecia dose hair buy requip us lisinopril cheap mexican purchase finasteride no visa online without prescription arimidex prices cheap maxalt for sale online no prescription required online pharmacies premarin requip buy online requip rezept buy online premarin order cytotec order arimidex no visa without rx maxalt no prior script buy discount requip on line premarin with repronex free maxalt buy cytotec pills no prescription purchase arimidex overnight buy arimidex discount buy arimidex without a perscription finasteride buy cheap generic lisinopril metformin for pets non rx cheap lisinopril where to buy orlistat no prescription lisinopril usa i need to order cytotec without a prescription buy cheap lisinopril on line buy cytotec online without prescription from canada next day delivery on lisinopril saturday where can i purchase premarin online buy finasteride pill order generic arimidex online cheap arimidex uk arimidex from india is it safe buy lisinopril now finasteride without a prescription shipped overnight express next day fedex shipping for maxalt buy prednisone without rx lioresal fedex shipping canadian priligy diet pills without a prescription proscar no prior script robaxin without a prescription or doctor no prescription required robaxin proscar no doctor prescription where to buy cytotec no prescription cheap robaxin no script compazine cash on delivery buy robaxin no visa online without prescription buy fincar online made in america buy antabuse online us pharmacy buy cytotec online without a prescription online purchase proscar pharmacy antabuse finasteride pharmacy buy prednisone online uk metformin usa buy genuine prednisone in the u.s. buy metformin online buy premarin no perscription cod requip buy cod buy lisinopril 5 mg buy premarin no visa online without prescription cytotec generic cheap purchase maxalt purchase arimidex online with overnight delivery buy maxalt free consultation purchase premarin without rx to ship overnight buy cytotec with no prescription buy premarin cod next day delivery buy requip now buy requip buy finasteride online prescription buy metformin on line amex buy lisinopril free consultation metformin buy online in stock buy metformin cash on delivery prednisone buy no prescription how to by prednisone online purchase maxalt cod next day delivery order cytotec online non prescription prednisone purchase finasteride cod next day delivery where can i buy herbal seroquel where can i buy premarin online without a prescription can i buy cytotec online buy lisinopril on line amex buy premarin without rx lisinopril online purchase premarin pay pal online without prescription buy premarin online buy premarin with a mastercard buy lisinopril 10mg how to get a premarin rx prezzo premarin purchase maxalt online no membership overnight shipping buy pharmacy arimidex waterview buy seroquel online premarin tablets buy metformin in the uk buying premarin online without rx discount metformin buy lisinopril online us pharmacy buy metformin on line amex buy arimidex cheap online buy premarin without a perscription purchase arimidex online metformin 850 mg metformin from india order lisinopril uk 1 mg requip buy cod arimidex how to get orlistat how to get a finasteride prescription buy seroquel in england buy premarin epharmacist order arimidex without rx needed cheap maxalt no script finasteride online no rx overnight discount arimidex where can i buy arimidex purchase metformin online without rx buy metformin online without prescription requip 2 mg order prednisone without prescription to ship overnight buy maxalt online with next day shipping no prescription needed robaxin buy cheap fluconazole under without rx no prescription priligy how to get cytotec buy baclofen without doctor maxalt overnight delivery fed ex generic celebrex prices buying fluconazole online cheap lioresal no script buy in baclofen uk priligy without a prescription generic robaxin tablets cheap finasteride without rx nonprescription orlistat order finasteride without a rx overnight shipping buy premarin visa generic prednisone no prescription finasteride no doctors prescription buy low cost seroquel lisinopril for sale purchase maxalt overnight delivery buy requip legally order finasteride cash on delivery best arimidex online pill arimidex without doctor prescription order buy arimidex online cheapest place to buy requip buy seroquel online no prescription buying finasteride over the counter wholesale arimidex cheap buy finpecia canada purchase cheap requip buy lisinopril visa arimidex free consultation fedex overnight delivery uk buy arimidex seroquel purchased online without prescription buy prednisone cheap without perscription where to buy seroquel how to buy orlistat without a prescription buy metformin doctor prescription prescription metformin buy metformin online with a debit card where to buy metformin without a prescription prescription requip seroquel bestellen where to buy maxalt no prescription no fees buy arimidex without a perscription purchasing cytotec buying seroquel online requip buy online maxalt without prescription mexico buy seroquel from india buy maxalt online no membership uk order requip buying orlistat online buy premarin uk buy finpecia online canada prednisone purchase without prescription finpecia online 1mg requip bestellen orlistat online cheap metformin rezept canada finasteride no prescription buy arimidex shipped cod how to order prednisone finasteride shipped c.o.d. no script finasteride finpecia generic online buy seroquel on line without a rx metformin capsule purchase maxalt paypal without prescription canadian prescriptions finasteride cheap finasteride by money order xenical buy online premarin buying cytotec with no rx buy finasteride online without prescription purchase maxalt without prescription arimidex espana maxalt no rx foreign purchase premarin without a prescription overnight shipping where to buy cheap maxalt 5 mg no perscription buy finpecia 1 mg canada no prescriptions needed for maxalt 5 mg orlistat 120 mg ordered without a perscription buy lisinopril 10 mg diet pills no presciption maxalt 5 mg buy finasteride 1 mg no prescription buy seroquel 200mg free consultation canadian prescriptions premarin 0,625mg buying seroquel 200mg online cheap cytotec 100 mcg online no prescription buy premarin 0,625mg without buy cytotec 100 mcg online with no prescription cytotec 100 mcg sale no prescription order premarin 0,625mg on line generic requip 2mg cost purchase no perscription maxalt 5 mg buy requip 2mg online without prescription seroquel 200mg for sale requip 2mg wholesale discount maxalt 5 mg overnight seroquel 200mg to buy buy premarin 0,625mg with a visa buy premarin 0,625mg visa el lisinopril 10 mg generico requip 2mg overnight finasteride generic walmart buy cytotec 100 mcg with no prescription no prescription maxalt 5 mg cod delivery buy lisinopril 10 mg from india buy finpecia 1 mg without prescription requip 1 mg in usa requip 1 mg buy no prescription premarin 0.625 mg from mexico maxalt 5 mg order on line cheap orlistat 120 mg online no prescription buy lisinopril 5 mg online with no perscription how to purchase finpecia 1 mg purchase generic metformin 500 mg online to buy metformin 500 mg buy requip 1 mg cheap without perscription orlistat 120 mg for sale finasteride 1 mg generic sale maxalt 5 mg order overnight were to buy requip 1 mg orlistat 120 mg purchase canada can i get lisinopril 5 mg without a prescription? cytotec 200 mcg ordered without a perscription real cytotec 200 mcg without prescription buy finpecia 1 mg online made in america finpecia 1 mg online purchase problems with buying lisinopril 5 mg without rx online pharmacy maxalt 5 mg no prescription order orlistat 120 mg online no prescription where to buy prednisone 20 mg no prescription requip 1 mg seroquel 200 100 50 300 mg for sale without prescription buy metformin 500 mg no prescription requip drug buy cheap generic orlistat online canada pharmacy no prescription buy premarin in india cheap prednisone no prescription arimidex order online seroquel for sale order cytotec want to buy requip in usa fedex premarin without priscription buy arimidex without prescription maxalt no prescription overnight maxalt without a r x buy arimidex cod next day delivery buy orlistat without rx seroquel prescription where can i order prednisone online purchase maxalt online without script finasteride online order saturday delivery purchase no perscription premarin buy cheap generic lisinopril requip drug cheap arimidex no rx buy arimidex online cheap buy cheap generic arimidex online wholesale arimidex cheap best place to buy prednisone online? buy genuine orlistat in the u.s. do you need a prescription for orlistat in mexico buy prednisone online seroquel overdose online overnight shipping finasteride where can i get prednisone without a prescription buy generic prednisone no prescription order maxalt online from mexico buy premarin online pills order finasteride without a prescription from us cytotec without rx maxalt deliver to uk fed ex overnight buy prescription priligy online priligy ups fedex shipping. buy proscar without prescription buy celebrex shipped cod buy baclofen without a credit card buy prednisone without a priligy shipped c.o.d. buy generic fincar online buy robaxin no prescription celebrex for pets maxalt fast delivery no doctors celebrex tabletten no prescription needed maxalt robaxin fast delivery no doctors no presciption maxalt ordering glucophage online online proscar buy baclofen maxalt without prescription cheap lioresal without a prescription buy pharmacy baclofen waterview antabuse 500 mg fincar no script order proscar online next day delivery buy cheap prednisone without prescription generic cytotec without prescription canada fedex priligy overnight without a rx order maxalt cheap overnight glucophage 1000 mg how to order proscar online without a rx cytotec order overnight buy lioresal online without a prescription and no membership baclofen online non presciption prednisone buy maxalt cod next day delivery buy cod antabuse where to buy cheap proscar no prescription buy prednisone without rx from us pharmacy buy prednisone online no prescription buy cheap fedex proscar canada celebrex cheapest atarax online how to order feldene online without a prescription buy keflex tablets without prescription wholesale revia buy discount desogen where to buy arcoxia without a prescription online ordering casodex buy 400 mg asacol purchase lamictal no scams feldene from india buy benicar without a r x feldene cod next day delivery how to get a keflex prescription buying desogen online without prescription buy desogen online cod buy zovirax generic buy discounted arcoxia online purchase cycrin no visa online without prescription no prescription lamictal next day lamictal overnight fed ex no prescription buy cycrin online with a debit card discount principen overnight online pharmacy no prescription feldene vantin from india is it safe buy generic vantin canada order cycrin without a prescription overnight shipping cleocin with free fedex overnight buy generic tenormin from india atarax without a prescription canadian generic vantin feldene with overnight fedex buy discount lamictal on line how to buy feldene online without a rx no prescription required cleocin asacol online sale without prescription benicar with no prescription overnight shipping buy asacol without a prescription purchase feldene pay pal without rx order cheap desogen online uk medication atarax clomiphene buy online us keflex without prescription buy discount cleocin online where can i buy keflex without a prescription buy principen online with next day shipping buy benicar with american express order no prescription atarax desogen with overnight fedex order casodex cash on delivery where to buy lamictal without a prescription mail order arcoxia purchase online rx lamictal without buy casodex no visa without rx feldene u.p.s shipping cod buy zovirax on line amex what does casodex look like purchase online prescription feldene principen without a prescription or doctor buy benicar online now casodex canadian benicar diet pills without a prescription revia no rx buy discount vantin online buy tenormin atarax purchase without prescription buy generic benicar online no prescription overnight principen without a prescription order casodex uk online arcoxia buy tenormin online without a prescription and no membership vantin online overnight delivery cod buy tenormin amex buy non prescription drugs generic cycrin buy vantin online prescription buy discount cleocin purchase generic principen online order vantin 200 mg without prescription online asacol order no prescription needed cycrin feldene fedex finasteride xr buy online cheap premarin with free fedex overnight buy premarin with visa purchase requip amex online without prescription buy requip from india premarin shipped by cash on delivery buy arimidex diet pill buy cheap lisinopril purchase maxalt cod next day delivery buy requip online us pharmacy buy metformin online us pharmacy buy finasteride without prescription maxalt online cash on delivery uk buy metformin premarin delivered overnight buy maxalt overnight shipping cytotec no prescription required medikament metformin purchase finasteride online buy finasteride online without dr approval order finasteride without prescription buy arimidex uk order premarin overnight cheap is it legal to buy orlistat online uk arimidex requip no doctors prescription requip for pets buy metformin cheap online maxalt online purchase prednisone to buy in canada premarin price buy premarin online no prescription buy cheap lisinopril line metformin online purchase finasteride without prescription from us pharmacy how to buy premarin online without a rx arimidex overnight no consult where to purchase cheap requip no rx overnight maxalt c.o.d buy requip with american express cheap maxalt no script buy finpecia online prescription el seroquel generico buy requip pay cod maxalt no dr buy lisinopril once a day metformin fedex shipping how to order maxalt online without prescription buy discount seroquel buy generic finasteride purchase cheap online metformin purchase cheap metformin online online purchase requip where to buy cytotec premarin without prescription overnight shipping buy lisinopril canada buy maxalt from a usa pharmacy without a prescription order requip no rx maxalt online no perscription overnight prednisone overnight delivery generic lisinopril uk discount maxalt ordering premarin over the counter buy premarin with a mastercard buy premarin diet pills maxalt without persription buy lisinopril no prescription buy premarin online cod buy requip in the uk cheapest maxalt 5 mg metformin 500 mg ordering buy cytotec 200 mcg 200mcg maxalt 5 mg cheap on online maxalt 5 mg prescription cost finpecia 1 mg online order buy non prescription drugs generic lisinopril 5 mg requip 1 mg tablets 200 mcg no prescription australia cheap requip 1 mg buy prednisone 20 mg without a prescription in the united states seroquel 200 100 50 300 mg purchase overnight delivery cytotec 200 mcg online order canadian pharmacy premarin 0.625 mg orlistat 120 mg express online generic orlistat 120 mg canada order finasteride 1 mg online overnight shipping buy requip 1 mg cheap without perscription premarin 0.625 mg no script finasteride 1 mg with out a prescription buy finpecia 1 mg over the counter lisinopril 5 mg prescription cost low price rx online website seroquel 200 100 50 300 mg get orlistat 120 mg without prescription generic lisinopril 5 mg without a precsriptions where to buy metformin 500 mg maxalt 5 mg cheap online order orlistat 120 mg canadian pharmacy no prescription cytotec 200 mcg finasteride 1 mg available canada online pharmacy no prescription cytotec 200 mcg buy discounted orlistat 120 mg online purchase generic premarin 0.625 mg online cytotec 200 mcg 100 mcg without prescription how to order lisinopril 5 mg order cytotec 200 mcg overnight how to buy premarin 0.625 mg without a prescription buy cheap generic maxalt 5 mg online canada pharmacy no prescription no prescription generic orlistat 120 mg prednisone 20 mg online no prescriptions required from the us buy lisinopril 5 mg online without prescription from canada orlistat 120 mg no prescription needed no prescription generic prednisone 20 mg generic lisinopril 5 mg online buy cytotec 200 mcg without prescription order finasteride 1 mg online consultation no prescription generic cytotec 200 mcg 0.625 mg premarin order maxalt 5 mg online seroquel 200 100 50 300 mg without a prescription buying seroquel 200 100 50 300 mg with no rx where can i buy requip 1 mg without a perscription? buy discounted finasteride 1 mg online buy premarin 0.625 mg pills no prescription finasteride 1 mg no prescription buy cytotec 200 mcg online without prescription where to buy maxalt 5 mg no prescription d3wwqa finasteride 1 mg with no prescription order cytotec 200 mcg online overnight shipping uk medication requip 1 mg requip 1 mg buy online where to buy finasteride 1 mg no prescription d3wwqa buy finasteride without a prescription overnight shipping finasteride no physicisn consult purchase requip online without rx buy requip mastercard finasteride shipped cod buy metformin american express buy maxalt in europe buy seroquel uk orlistat cost lisinopril without doctor prescription order finasteride buy maxalt without a prescription how to buy maxalt online without rx buy maxalt without a r x buy premarin money buy buy premarin without doctor requip fedex shipping buy finasteride online without a prescription buy premarin next day delivery buy cheap generic metformin buy premarin on line without a rx legal buy finpecia online maxalt without a presciption purchase maxalt without prescription needed cheap seroquel online cheapest finasteride online metformin prices buy requip no prescriptions requip online order prednisone order on line generic requip online online maxalt and fedex buy maxalt 5 mg no visa online without prescription how to purchase maxalt 5 mg online without a prescription maxalt 5 mg online without a perscription prednisone 40 mg available at health department where to buy lisinopril 10 mg by cod canadian maxalt 5 mg orlistat 120 mg online without prescription finpecia 1 mg online australia uk order metformin 1000mg maxalt 5 mg online overnight delivery cod non rx cheap premarin 0,625mg donepezil prescription order buy metformin 1000mg from india no perscription maxalt 5 mg next day purchase seroquel 200mg no prescription cheap overnight shipping on generic prednisone 40 mg generic prednisone 40 mg without prescription canada ordering orlistat 120 mg from canada without a prescription where can i buy premarin 0,625mg buy discount lisinopril 10 mg on line prednisone 40 mg without a perscription india orlistat 120 mg purchase lisinopril 10 mg amex online without prescription cheap maxalt 5 mg no rx lisinopril 10 mg suppliers premarin 0,625mg shipped by cash on delivery how to order premarin 0,625mg online without a prescription cheap premarin 0,625mg usa premarin 0,625mg cheap mexican robaxin online uk diflucan online pharmacy order robaxin online from mexico canadian proscar diet pills without a prescription where to buy cheap priligy no prescription glucophage espana lioresal overnight us delivery compazine online pharmacy prednisone c.o.d. comprar compazine generico buy antabuse diet pills antabuse tablets purchase celebrex buy cytotec without prescription australia prescription priligy online buy prednisone offshore no prescription fedex proscar no dr buy maxalt without rx from us pharmacy priligy from canada cheap purchase priligy order priligy online next day delivery buy antabuse no prescription low cost buy cheap compazine online free consult maxalt with no presciption where to buy fluconazole by cod buy cod glucophage robaxin with free dr consultation celebrex order online buy cheap diflucan online free consult cytotec 200mg tablets express shipping free priligy antabuse best buy compazine 500mg purchase finasteride how to buy lioresal on line fincar buy online without rx buy proscar online overnight buy in baclofen uk order proscar order amex proscar without a dr buy cheap fluconazole online free consult how to order prednisone online without a prescription purchase robaxin money purchase buy cheap finasteride celebrex toronto generic avodart cheap can you buy cialis in cuba buy cheapest generic viagra online where to buy viagra in guangzhou buy nolvadex forum where to buy levitra in canada where to buy cytotec in malaysia pharmacy buy celebrex usa can you buy ventolin can i buy viagra over the counter in qatar purchase flagyl for dogs is it legal to purchase viagra online where to buy cialis in manila order cytotec online buy kamagra canada buy cytotec online canada side effects of coming off premarin how to get prescribed arimidex requip xl price comparison can you buy metformin over the counter finasteride price in canada what does finasteride cost is estrace cheaper than premarin cytotec abortion cost cost of seroquel 50 mg where to get finasteride in singapore buy cheap seroquel no prescription what kind of high do you get from seroquel coming off premarin effects lisinopril hctz 20-12.5 mgs why is prednisone on back order anafranil social anxiety disorder buy generic finasteride australia how long for finasteride to get out of system maxalt price costco purchase prednisone for dogs how to buy cytotec in dubai order finasteride arimidex drug price lisinopril 10 mgs what does requip cost how much does seroquel cost in australia que sale despues de tomar cytotec finasteride while trying to conceive price for finasteride cytotec abortion pill sale finasteride tablets reviews cytotec como sale el feto tenormin 100 costo street price seroquel 200mg finasteride cost at pharmacy retail price of seroquel low dose seroquel reviews price of metformin in india finasteride cost in usa maxalto shop nl buy cheap cytotec metformin reviews pcos metformin 500mg price in india alli orlistat deutsche price of cytotec in ghana reviews of metformin maxalt lingua online kaufen maxalt retail price arimidex price south africa can you buy finasteride in the uk reviews finasteride hair loss premarin discount where can i buy cytotec in quiapo prednisone 10 mg purchase maxalt melt 10mg cost order seroquel xr online metformin 1000 et grossesse anafranil for social anxiety disorder how to get finasteride from doctor going to try finasteride depression coming off finasteride where can i buy tenormin metformin helps getting pregnant premarin online kaufen buy cheap seroquel online cytotec online risk buy cytotec amazon arimidex online bestellen cytotec abortion pills for sale is proscar cheaper than finasteride pedir cita previa online servicio canario de salud cytotec pfizer price cost of finasteride in mexico finasteride propak price cost of cytotec in nigeria arimidex for sale cytotec induction and off label use do you need a prescription for metformin seroquel xr positive reviews finasteride propak cost lisinopril hctz finasteride tablets reviews lisinopril 10 mg cost orlistat 60 for sale buy seroquel cheap is it safe to buy finasteride online cost seroquel buy cheap premarin cream cheap finasteride online what is the prescription for cytotec premarin pills for sale revia online kopen buy revia premarin 0.45 mg cost can you get high off of lisinopril buy cytotec australia can you buy seroquel online get seroquel xr savings card is cytotec available in pharmacy seroquel reviews insomnia where can we buy cytotec in cebu necesito comprar cytotec costa rica duane reade finasteride price prescription for finasteride going off seroquel and losing weight order metformin xr 1000 mg generic finasteride where to buy arimidex user reviews lisinopril 10 mg recall maxalt wafers price australia finasteride cost at costco buying cytotec no prescription maxalt to buy cheapest cytotec online will metformin help me get pregnant arimidex positive reviews arimidex discount coupons cost of premarin 1.25 mg how much do seroquel cost on the street cytotec pills online can you get pregnant while on premarin arimidex and still you get gyno seroquel to get off xanax can i buy cytotec at walgreens where can i get cytotec pills finasteride cost at target médicaments metformin et grossesse lisinopril side effects urine odor buy xenical orlistat in canada where to buy cytotec in dubai costo de las pastillas cytotec en mexico genuine cytotec for sale philippines metformin price philippines cytotec costo peru buy prednisone dogs buy prednisone in mexico order prednisone online prednisolone where can i buy it buy prednisone online in uk how to buy prednisone from canada i need to buy prednisone can you buy prednisolone online can you buy prednisone in canada buy prednisolone in uk buy prednisone online for dogs buy prednisolone for horses why is prednisone on back order buy prednisone 20mg tablets purchase prednisolone online buy prednisone 20 mg how to buy prednisone for dogs buy prednisolone for dogs uk prednisolone eye drops cheap where to buy prednisolone in uk cheap prednisolone uk where can i buy prednisolone tablets for dogs can i buy prednisone over the counter in spain buy prednisolone 1 mg cheap prednisone 20mg where do i buy prednisone buy prednisone canada online prednisolone for dogs to buy uk where can i buy prednisolone tablets for dogs in the uk cheap prednisolone tablets buy prednisolone 5mg tablets buy prednisolone 5mg online buy prednisolone eye drops online buy prednisolone acetate ophthalmic suspension where to order prednisone where to buy prednisone 5mg prednisolone tablets to buy where can i buy prednisone online buy prednisolone in the uk order prednisone for pets buy prednisolone online prednisolone where can i buy it is it safe to buy prednisone online can i buy prednisolone over the counter in uk buy prednisolone for dogs buy prednisone 5mg where can i buy prednisone for my cat buy prednisone 5 mg online prednisone mail order buy cheap prednisone online where to buy prednisolone 5mg for dogs how to buy prednisone buy prednisone canada buy prednisone online canada where can i buy prednisolone buy prednisone cream buy prednisolone steroids uk can you buy prednisone over the counter for dogs buy prednisone 20 mg cheap prednisone for dogs where can i buy prednisolone online can you buy prednisolone over the counter prednisone 10mg buy buy prednisone for dogs online uk can you buy prednisone over the counter in mexico lisinopril no prescription generic buy synthroid using paypal where to buy cytotec in iligan city order zovirax tablets where can i buy cytotec in johannesburg cheap valtrex generic where can i buy cytotec in quezon city orlistat purchase para que sirve el orlistat how can i buy synthroid buy prednisone australia buy orlistat prescription where can you buy zovirax can u order valtrex online buy cytotec amsa fast orlistat reviews lisinopril no rx buy synthroid online from canada buy prednisone online for humans orlistat us where to buy cytotec in manila philippines can you buy zovirax over the counter in australia buy metformin sr buy synthroid canada how to order zovirax suppliers of orlistat lisinopril combinations order metformin canada metformin pills buy online buy zovirax ointment cheap lisinopril 30 mgs where to buy cytotec in hk can i buy finasteride over the counter can i get pregnant while taking premarin orlistat where can i buy cytotec here in the philippines maxalt off patent seroquel cost per month orlistat generico how much should arimidex cost finasteride purchase reviance face lift reviews cheap anafranil drug cost of cytotec tablets metformin while trying to conceive where can i buy orlistat in us seroquel xr positive reviews finasteride vs finasteride price arimidex where can i buy it cytotec tablets price in pakistan anafranil reviews for depression finasteride effects wear off xenical orlistat no prescription where to buy finasteride online can you get drunk on revia buy finpecia cipla anafranil for depression user reviews get finasteride prescription online finasteride price in philippines metformin price south africa states abbreviations excel alphabetical order where can i get cytotec in south africa purchase anafranil online anxiety coming off seroquel buy arimidex in canada buy lisinopril 10 mg toronto seroquel 200mg without doctor prescription where to buy seroquel 200mg online buy genuine lisinopril 10 mg premarin 0,625mg without rx overnight shipping maxalt 5 mg non rx fedex overnight free cheapest maxalt 5 mg online buy generic finasteride 1mg finasteride depression buy finpecia 1 mg online india buy finpecia 1 mg no prescription forum lisinopril 10 mg pharmacy online requip 2mg premarin 0,625mg online uk purchase maxalt 5 mg no prescription cheap where can i buy cytotec 100 mcg over the counter generic premarin 0,625mg prices orlistat 120 mg no perscription required canadian maxalt 5 mg diet pills without a perscription orlistat 120 mg order on line best place order finasteride order prescription free maxalt 5 mg cheap generic requip 2mg pay cod for xenical without prescription lisinopril 10 mg ohne rezept online metformin 1000mg buy requip 2mg usa misoprostol buy online cytotec 100 mcg no prescription needed arimidex mexico buy online premarin without rx buy no online rx valacyclovir purchase premarin without a rx online online pharmacy premarin where can i buy prednisone cheap orlistat no prescription purchase arimidex amex online without rx buy arimidex on line cheap premarin by money order requip online prescription arimidex cheap mexican purchase synthroid no visa without prescription where can i buy requip synthroid overnight no consult buy finasteride without buy cheap metformin with dr. prescription metformin metformin buy synthroid online with overnight delivery synthroid c.o.d. buy finpecia no prescription buy arimidex with no prescription buy no perscription premarin finasteride with free fedex overnight online pharmacy finasteride no prescription canada requip buy orlistat oral purchase finasteride online with overnight delivery generic synthroid tablets buy premarin diet pill buy prednisone without a percsription online pharmacies no prescription lioresal buy cheap seroquel online buy metformin in the uk order cheap overnight finasteride premarin delivered overnight synthroid no dr synthroid without a prescription or membership buy premarin where order buy requip online premarin mexico buy finpecia online paypal buy seroquel money buy premarin buy fedex c.o.d synthroid buy compazine buy cheap priligy without a prescription buy priligy without a prescription robaxin without a presciption maxalt deliver to uk fed ex overnight buy cheap baclofen how to order cytotec online without a prescription buy fluconazole no rx compazine buy compazine order priligy pay pal online without rx buy proscar online without rx proscar online purchase prednisone generic cheapest no presciption priligy proscar prescription from s online order lioresal online no membership overnight shipping buy priligy online no prescription