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.


premarin discount can you buy zovirax over the counter in australia buy amoxil premarin 1.25 reviews can i buy premarin in canada dapoxetine original buy buy inderal australia where can i buy ampicillin doxycycline hydrochloride buy buy amoxicillin 500mg canada buy finpecia 1 mg without a prescription in the united states premarin 0.625 mg available canada buy lisinopril 5 mg no prescription ordering seroquel 200 100 50 300 mg online ordering prednisone 20 mg online without a precription requip 1 mg sale no prescription do you need a prescription for cytotec 200 mcg in mexico requip 1 mg online purchase online pharmacy no prescription premarin 0.625 mg getting maxalt 5 mg without doctor seroquel 200 100 50 300 mg no prescription revia no prescription buy erythromycin tablets online how much does premarin cream cost buy cheap dapoxetine can i buy doxycycline online uk can i get lisinopril 5 mg without a prescription? purchase generic finasteride 1 mg online pay finasteride 1 mg buy finpecia 1 mg over the counter 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 finpecia tabletten cheap finasteride metformin no prescription to buy where we can buy cytotec in dubai order maxalt no visa best lisinopril no prescription canada buy generic metformin orlistat froom china atarax 50 mg where to buy cytotec in manila 2013 prednisone purchase canada ic lisinopril orlistat 60 for sale premarin 0.625mg benicar 5mg without prescription orlistat no prescription nice beauty buy abortion pills misoprostol cytotec buy dapoxetine forum buy avodart cheap where can i buy zovirax tablets order doxycycline uk can i buy erythromycin over the counter uk buy dapoxetine in the uk can you buy ventolin in italy pedir cita previa itv online extremadura buy generic neurontin online do i need a prescription to buy zoloft buy celebrex 200 mg online buy fluoxetine for cats premarin buy online uk where to buy prednisone online can i buy prednisolone in spain prednisone for dogs buy online uk buy prednisolone steroids uk how to buy prednisone can you buy prednisolone online prednisolone tablets to buy prednisolone for dogs buy online uk buy prednisone 10mg buy prednisolone online uk where to order prednisone buy prednisolone suppositories cheap prednisone for dogs buy prednisone for dogs online uk prednisone 10mg buy where can i buy prednisone for my cat buy prednisone online usa buy prednisone 1mg purchase prednisone for dogs 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 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 generic maxalt online maxalt off patent seroquel for sleep reviews cheap anafranil dosage metformin prescription finasteride purchase uk how to get arimidex prescription lisinopril on line no prescripion donde puedo comprar cytotec en costa rica finasteride price per month seroquel xr for bipolar disorder can you buy premarin cream over the counter best place to buy finasteride online forum premarin price walmart maxalto store tokyo where to buy lisinopril 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 buy furosemide for dogs where can i buy cytotec in bahrain finpecia online maxalt without a perscription canadian bactrim 400 80 mg buy maxalt without a perscription to ship overnight orlistat diet pill mexico maxalt cod online orders buy xenical orlistat generic maxalt buy 10 mg buy mail order metformin augmentin 875 125 mg dosage cost of bactrim without insurance best maxalt online pill orlistat precio maxalt 10 mg online buy cytotec online usa buy rx maxalt without buy pfizer cytotec online baclofen mglur maxalt mastercard order orlistat otc canadian pharmacy where to buy bactrim antibiotic buy orlistat no prescription where we can buy cytotec in dubai bactrim roche buy bactrim online no prescription augmentin 500 mg price cheap version of propecia gsk augmentin online 500 mg motrin buy cod metformin premarin generic equivalent where to buy prednisone steroid going off requip buy prednisone mexico where can i buy cytotec in johannesburg 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 orlistat usa viagra tablet in saudi arabia calis cialis most reliable generic viagra buy metformin and metformin buy cytotec cavite area lisinopril 10 mg tablet atarax where to buy cytotec in metro manila buy prednisone premarin mgs 75 mg seroquel xr benicar hct 20 mg metformin without prescription maxalt no physician approval buy maxalt amex online without prescription lisinopril hctz 12.5 no persription where can i order finasteride seroquel 900 mg buy finpecia buy cheapest metforminbuy no prior prescription metformin where to buy cytotec in canada anafranil reviews for pure o how can i get finasteride uk where to get cytotec pills maxalt 10 mg reviews price of metformin in philippines buy cytotec cheap finasteride good price anafranil reviews arimidex sale uk finasteride hair loss price how to get a prescription for finasteride uk buy finasteride in canada can you get high off of metformin discount finasteride online how much seroquel xr to get high arimidex purchase buy finasteride 1 mg australia no prescription purchace lisinopril 5 mg online buy real maxalt 5 mg buy metformin 500 mg without prescription buy metformin 500 mg online canada seroquel 200 100 50 300 mg prescription cost requip 1 mg ordered without a perscription pay prednisone 20 mg where can i buy orlistat 120 mg without a perscription? no prescription seroquel 200 100 50 300 mg on line pharmacy where to purchase orlistat 120 mg oral cheap premarin 0.625 mg without rx premarin 0.625 mg rx cheap purchasing cytotec 200 mcg lisinopril 5 mg ordered without a perscription seroquel 200 100 50 300 mg generic cheap cytotec online buy maxalt 5 mg seroquel mg overdose where to buy cytotec in bacolod city order finasteride buy finasteride amazon buy requip shipped cod buy metformin usa seroquel 200 mg street price seroquel xr 400 mg tablet order finasteride 1mg buy finasteride online paypal amoxicillin 500mg buy online uk purchase cytotec finpecia without a perscription no prescripton maxalt prednisone cheap arimidex usa buy arimidex online cod finasteride online prescription buy requip no rx buy requip 2mg where to buy generic premarin online without a rx orlistat without a rx buy orlistat pills no prescription arimidex overnight buy prednisone online uk purchase maxalt without where to buy generic maxalt online without a rx order premarin overnight cheap purchase arimidex online without rx no prescription arimidex buy generic metformin from india buy lisinopril with visa cheap purchase arimidex prednisone available at health department cytotec tablets 100 mg no prescription australia where can i buy maxalt online purchase premarin online without script finasteride doctor consult order orlistat online no prescription buy premarin with amex buy premarin discount canada orlistat buy cytotec next day delivery buy finasteride without rx buy metformin online buy lisinopril free consultation canada metformin cheap generic arimidex buy finasteride tablets without rx purchase arimidex without prescription pay cod prednisone 40mg buy requip overnight metformin generic prednisone online buy online arimidex without rx arimidex with repronex generic maxalt no prescription buy requip on line without a rx buying maxalt without a prescription buy metformin 850 mg uk where to buy cheap finasteride seroquel 800 mg where i can buy cytotec online seroquel mg size buy cytotec hong kong a doctors order is .125g of ampicillin where to purchase cheap requip no rx where can i buy maxalt online where to buy cytotec in cebu buy prednisolone 5mg tablets buy prednisone mastercard where to buy cytotec in dumaguete cheap lisinopril hctz cheap cytotec uk maxalt fedex shipping maxalt online no rx overnight buy prednisone for my dog buy prednisolone australia orlistat diet pills buy bactrim for dogs cheapest place to buy requip purchase maxalt over the counter cod overnight seroquel 200 mg dosage purchase rx maxalt without where can you buy cytotec in the philippines where can i buy metformin over the counter purchase ampicillin online buy maxalt cod next day delivery buy finpecia tablets in usa buy arimidex where can you buy cytotec in south africa purchase cheap prescription maxalt seroquel xr 150 mg purchase cheap requip ebay orlistat metformin cheap price where can i buy prednisone for my cat can i buy prednisone online in uk can you buy prednisolone over the counter can you buy prednisone in spain buy prednisolone sodium phosphate prednisolone purchase uk buy prednisolone acetate ophthalmic suspension where can i buy prednisone online order prednisone for dogs online buy prednisone canada online order prednisone canada how to buy prednisone for dogs prednisone 10 mg purchase buy liquid prednisone for cats can you order prednisone online purchase prednisone for dogs buy prednisone uk can i buy prednisolone over the counter in uk buy prednisone in usa where to buy prednisolone acetate ophthalmic suspension buy prednisolone acetate i need to buy prednisone buy prednisone dogs order prednisone overnight buy prednisolone steroids uk buy deltasone prednisone where to buy prednisolone online get prednisone without prescription buy apo prednisone buy prednisone 5 mg online where can i buy prednisone without a prescription buy prednisone for ferrets prednisone order online prednisolone acetate buy online where can i buy prednisolone for my dog indian prednisone prednisone online no prescription 20 mg purchase prednisone online prednisone online purchase prednisone 10mg buy online where to buy prednisone 5mg buy prednisolone 5mg for dogs in uk buy prednisone online with no perscription buy prednisone over the counter prednisolone purchase uk buy online prednisone 40 mg generic prednisone online no prescription where to order prednisone prednisone 40mg purchase prednisolone tablets prednisone prescription cost prednisone no script can you buy prednisone over the counter in canada maxalt without prescription shipped overnight express purchase maxalt amex online without prescription can you buy cytotec tablets premarin 1.25 mg tablet cytotec where can i buy it buy amoxicillin online next day delivery buy cytotec generic where to buy requip where to buy prednisolone eye drops premarin mg buy propranolol er where to buy requip 1 mg no prescription d3wwqa finpecia 1 mg tablets 200 mcg no prescription australia buy premarin 0.625 mg online uk overnight no prescription finasteride 1 mg seroquel 200 100 50 300 mg for sale without prescription low price rx online website metformin 500 mg finpecia 1 mg online without a prescription lisinopril 5 mg buy online without rx requip 1 mg no prescription required finpecia 1 mg online purchase prednisolone buy metformin 500mg tab 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 buy prednisone without a percsription arimidex pct for sale 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 finasteride sale uk seroquel prescription card seroquel xr canada pharmacy maxalt 10mg price side effects of coming off arimidex finasteride cost 2014 buy revia naltrexone get finasteride prescription online arimidex cost costco maxalt price australia price of arimidex comprar pastillas cytotec online how long before finasteride wears off seroquel for sale no prescription cytotec canada cytotec fincar overnight without prescription purchase lioresal without a rx online 200 mg cytotec order cheap fluconazole online where buy fluconazole buy maxalt daily use purchase prednisone pay pal online without rx purchase lioresal without prescription pay cod best buy antabuse buy brand fluconazole buy fincar online with no perscription purchase generic diflucan online proscar xr online glucophage espana buy finasteride online japan buy prednisolone tablets for dogs buy synthroid 200 mcg buy metformin 500 mg uk where can i buy metformin 500 mg buy prednisone for cats buy metformin in usa buy finasteride toronto seroquel 800 mg buy bactrim no script maxalt where to buy metformin tablets where to buy metformin 500 mg premarin 0.625 mg finasteride msd order where do you buy finasteride requip purchased online without prescription seroquel 300 mg street value prednisolone for dogs buy online uk buy metformin for pcos buy prednisone for pets i want to buy synthroid buy prednisolone buy metformin tablets uk buy lisinopril 5mg buy prednisolone for dogs order prednisolone prednisone 10mg buy online is it safe to buy metformin online where to buy metformin in canada where to buy metformin online uk buy prednisone 20mg tablets how to buy prednisone online metformin for purchase is it safe to buy synthroid online where to buy prednisolone in uk can you buy prednisone over the counter buy prednisone for ferrets buy stromectol online uk boots order propecia premarin .3 mgs is orlistat on 340b where can i buy cytotec in pangasinan ivermectin (stromectol) where to buy where can i buy amoxil online requip generic ordering maxalt online without a perscription orlistat 120 mg cheap finasteride nz finpecia from india buy finasteride from india buy propranolol uk online buy finasteride online review buy seroquel no script purchase no perscription maxalt ampicillin without prescrition online cialis 40 mg purchase duree des effets du viagra periactin weight gain pills online valtrex no prescription how much does singulair cost allegra 120 mg is for what nexium buy finasteride chemist warehouse where can i buy metformin from buy prednisone for cats orlistat online cheapest seroquel xr 300 mg buy metformin nz buy prednisone without cheap lisinopril 40 mg requip suppliers seroquel 400 mgs finasteride cheap price where can i buy atarax buy amoxicillin for dogs acheter orlistat order metformin xr weight loss buy prednisone online now lisinopril for sale seroquel xr testimonials anafranil patient reviews buy finasteride nz cytotec en cvs pharmacy orlistat no prescription usa finasteride discount com finasteride international shipping canadian cheap anafranil asda pharmacy finasteride price of metformin in philippines i want to buy arimidex guardian pharmacy singapore finasteride finpecia 1 mg generic online orlistat 120 mg cheap online cytotec 200 mcg buy online without rx buy lisinopril 5 mg without a prescription in the united states lisinopril 5 mg ordered without a perscription mail order cytotec 200 mcg buy seroquel 200 100 50 300 mg no prescription orlistat 120 mg buy no prescription premarin 0.625 mg online no prescription mail order maxalt 5 mg premarin 0.625 mg in canada seroquel 200 100 50 300 mg no prescription with mastercard 120 mg maxalt seroquel 200 100 50 300 mg generic buy generic cytotec 200 mcg online no prescription real cytotec 200 mcg without prescription where can i buy viagra with paypal best place to order propecia online help with cost of premarin finasteride price bangkok cytotec costo en farmacias mexico premarin cream price can i get finasteride over the counter cost of premarin vs. estrace maxalt purchase buy finasteride pharmacy proscar vs finasteride price finasteride propak cost can you order finasteride online finasteride get worse before it gets better where to buy lisinopril buy maxalt 5 mg 200mcg prednisone 20 mg express online finpecia 1 mg cost finpecia 1 mg ordering premarin 0.625 mg generic sale best place to buy prednisone where can i buy prednisone online can you buy prednisone over the counter in canada where to buy prednisolone 5mg for dogs buy generic prednisone buy prednisone 10mg can i buy prednisone online in uk where to buy prednisolone 5mg where can i buy prednisolone online buy prednisone online cheap buy prednisone how to buy prednisone buy prednisone uk can you buy prednisone in spain buy prednisone overnight delivery order prednisolone for dogs is it safe to order prednisone online can you buy prednisone over the counter for dogs buy cheap prednisone faut il une ordonnance pour le viagra priligy taiwan canadian pharma companies lipitor generic viagra livraison rapide cialis or generic credit card can women take cialis or viagra buy arimidex online canada buying cialis in malaysia hair loss propecia from canada cialis without prescription prednisone generic comment acheter viagra en pharmacie viagra soft tabs review revia online kopen where to buy cytotec in oman cheapest pharmacy to buy finasteride where to buy finasteride uk forum buy xenical orlistat canada canada orlistat otc order maxalt without prescription to ship overnight orlistat froom china purchasing maxalt without a script buy orlistat order maxalt pharmacy buy lisinopril 30 no prescription buy orlistat 120mg online how to find orlistat 120 mg 93551 zip cheap maxalt no rx metformin online prescription buy xenical orlistat orlistat mg buy orlistat usa no prescription donde puedo comprar redustat orlistat orlistat sky pharmacy orlistat 60 xenical orlistat 120 mg orlistat 60 mg canada generic orlistat 120mg buy orlistat buy orlistat online uk vasdecom orlistat orlistat in colorado co doctor purchase orlistat how to find orlistat 120 mg 93551 zip orlistat xenical 120 mg where to buy prednisolone eye drops can you buy prednisolone over the counter uk can you buy prednisone over the counter for dogs prednisolone backorder metformin 500 mg for sale usa finasteride 1 mg no rx metformin 500 mg online no prescription cheap finpecia 1 mg without a prescription requip 1 mg no rx buy maxalt 5 mg australia to buy finasteride 1 mg indian finasteride 1 mg canadian generic seroquel 200 100 50 300 mg no prescription cytotec 200 mcg online without prescription finpecia 1 mg generic prednisone 20 mg cheap online canadian pharmacy buy requip 1 mg order maxalt 5 mg online no prescription can i get cytotec 200 mcg without a prescription? premarin 0.625 mg purchase canada buy generic orlistat 120 mg no prescription requip 1 mg without a rx where can i buy metformin 500 mg without a perscription? buy premarin 0.625 mg online uk finasteride 1 mg online cheap prednisone 20 mg tablets 200 mcg no prescription australia prednisone 20 mg 100mcg tablets express shipping orlistat 120 mg buy cheap prednisone 20 mg oral tablet no prescription discount real lisinopril 5 mg without prescription order seroquel 200 100 50 300 mg where to purchase maxalt 5 mg oral cheap pay cod for orlistat 120 mg without prescription how to buy cytotec online orlistat supplies buy prednisone dogs purchase requip online without rx buy prednisolone eye drops online buy maxalt online consultation us buy requip american express buy valtrex online europe orlistat tablets uk seroquel 900 mg buy amoxicillin online for humans order proscar europe where can i buy real finasteride online buy premarin online uk can you buy phenergan online buy erythromycin buy celebrex acyclovir cream buy online uk buy antabuse online safely buy acyclovir 800 mg cita previa online seguridad social tenerife erythromycin cheap online how much does premarin cream cost can i purchase doxycycline over the counter how much is finasteride to buy cheap viagra online from india purchase motilium tablets order cheap kamagra where to purchase clomid buy viagra dapoxetine online buy acyclovir 800-mg online which doxycycline is cheaper order cytotec generic viagra for cheap can you buy clomid from a pharmacy buy cialis or viagra online is it safe to buy valtrex online purchase levitra secure site to buy clomid buy atarax syrup buy authentic propecia buy viagra online cheap canada best price seroquel xr review of seroquel xr buy merck finasteride price cytotec philippines how much is a prescription of maxalt seroquel price usa purchase anafranil online how to store seroquel maxalt mlts online price for metformin how much does finasteride cost per month cost of finasteride at boots how much does seroquel xr cost without insurance lisinopril buy online buy prednisone cream generic orlistat 120mg generic metformin usa purchase maxalt online with overnight delivery purchase metformin amex online without prescription requip prescription information buy cheap metformin free fedex orlistat 60 buy prednisone 10mg finasteride cheap with prescription lisinopril usa seroquel xr 300 mg where can i buy finasteride in the us lisinopril 2.5 mg tablets generic orlistat 60 mg lisinopril hctz benicar 40 mg tablet maxalt online doctors cialis ankara meclizine 12.5 mg tab cialis price thailand legitimate sublingual viagra viagra in delhi levaquin sale where to order ampicillin phenergan without persc buying viagra online uk atorvastatin 10mg generic lipitor can you really order cialis online 149 viagra a vendre cialis chile where can i buy zovirax buy motilium purchase doxycycline online uk can you buy avodart over the counter purchase fluoxetine cheapest place to buy doxycycline uk revia review premarin for sale tenormin 50mg price can you buy ventolin over the counter in italy purchase ventolin inhaler online buy antabuse in uk can you buy ventolin at sainsburys buy inderal 10mg cheap bactrim for sale how to purchase finasteride buy finasteride 1mg online uk is it legal to buy finasteride online buy finasteride philippines buy prednisone in mexico how do i buy metformin is it legal to order finasteride online buy cytotec uk alli orlistat philippines buy requip cash on delivery where can i buy cytotec in australia how to buy lisinopril where to order prednisone online buy finasteride online nz buy arimidex bodybuilding buy kamagra oral jelly thailand can you buy viagra in nicaragua mail order viagra safe roche xenical 120 buy buy non prescription flagyl buy herbal viagra australia order viagra plus erythromycin and benzoyl peroxide topical gel usp buy buy stromectol canada buy viagra danmark cheap kamagra sale where can i purchase generic cialis finasteride tablets to buy buy finasteride online india finasteride sale uk finasteride pharmacy direct buy propecia online uk buy finasteride online from canada isotretinoin online pharmacy how to come off finasteride order generic fincar online no prescription how to buy finasteride in india finpecia discount proscar vs finasteride cost best place to buy generic finasteride online get a prescription for finasteride online shop finasteride is it legal to buy propecia online do you need a prescription to get finasteride fincar for sale buy propecia tablets online generic finasteride 5mg online buy brand finasteride online finasteride ejaculation disorder buy cheap propecia online generic finasteride price beställa finasteride online can i get a prescription for finasteride online where can i buy prednisone for dogs cost of finasteride without insurance maxalto simplex sofa price overnight delivery of cytotec cost for cytotec coming off arimidex after 5 years finpecia 1mg cipla can metformin help me get pregnant lisinopril side effects urine odor how to get insurance to pay for finasteride cheapest place to buy finasteride in uk no script lisinopril finasteride going off patent buy finasteride new zealand maxalt without a perscription shipped overnight express buy seroquel 200 mg where to buy finasteride forum buy maxalt on line without a perscription where to buy cytotec in the philippines us maxalt fedex order generic finasteride online generic metformin uk arimidex 1 mg tablet pharmacy maxalt no prescrption maxalt without a presciption buy arimidex acheter orlistat atarax available in australia cytotec selling can you buy cytotec over the counter at walgreens finasteride prescription ireland finasteride patient reviews cytotec user reviews arimidex price in uk buy cheap cytotec in usa where can i buy arimidex online how much will generic finasteride cost retail price finasteride is it safe to take finasteride while trying to conceive healthy male viagra scam cheap tenormin classification where can i buy herbal metformin free fedex delivery maxalt requip online pharmacy purchase maxalt amex online without rx can i buy prednisone in mexico lisinopril over the counter requip cost buy lisinopril online india buy prednisone online cheap no presciption maxalt lisinopril mg day buy prednisone uk lisinopril 20 mg. order cheap overnight maxalt want to buy metformin in usa uk compazine generic glucophage mexico buy maxalt online overnight purchase prednisone without a prescription overnight shipping buy cytotec online with no perscription buy maxalt online cod buy maxalt online overseas baclofen buy cod fincar buy no prescription cheap generic baclofen priligy xr buy online cheap buying fluconazole online buy robaxin daily use order maxalt free next day airmaxalt on line prednisone purchase overnight delivery buy prednisolone sodium phosphate order prednisone for dogs how to order a prednisone taper prednisone buy from uk problems with buying prednisone without rx prednisolone backorder can i buy prednisolone in spain buy prednisone online overnight where to buy prednisolone acetate ophthalmic suspension prednisone oral tablet no prescription discount buy prednisone oral how to buy prednisone from canada order prednisone without rx can you buy prednisone over the counter for dogs where to buy prednisone where to buy prednisone uk where can i buy prednisone for my cat generic prednisone canada prednisone no prescription can i get prednisone without a prescription? buy generic prednisone buy prednisolone acetate ophthalmic suspension usp 1 prednisone online purchase order prednisone no prescription buy prednisone for dogs online buy generic prednisone no prescription where can i buy prednisolone