Sunday, October 28, 2012

Some Common Issue of Outlook User’s

Some Common Issue of Outlook User’s

Error 1: Profile name is already exists:

When you create and delete a profile for the same user several times, you might end up by getting an error message saying “The profile name you entered already exists. Enter a different profile name.” even though you can’t see the profile in the Control Panel.
This is caused by Outlook not completely removing the profile information from the system, more specifically from the Registry. To fix this, navigate to
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles

              And delete the key with the name matching the user that you are trying to create a profile for!

Error 2:
Ø  When I delete an e-mail from the shared mailbox I manage, the e-mail goes into my Deleted Itemsfolder instead of the folder in the shared mailbox;
Ø  When I send an e-mail as (SendAs) the shared mailbox I manage, the e-mail goes into my Sent Itemsfolder instead of the folder in the shared mailbox

If you ever get users complaining about any of the following cases, please note that to resolve it all you have to do is add/update a registry key on the user's PC:
The following applies to Outlook 2007:

Change the Sent Behavior

1.        Open the Registry and navigate toHKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Preferences\
2.        Look for the DelegateSentItemsStyle DWORD (if it doesn’t exist, create it)
3.        Set the value to 1
4.        Restart Outlook

 Now any e-mails sent from that shared mailbox (again, when using SendAs permissions) will go into theSent Items folder of the shared mailbox.

IMPORTANT: After you set the DelegateSentItemsStyle registry value to 1, the functionality is only available when the Exchange account is set to Use Cached Exchange Mode. The DelegateSentItemsStyle registry value will not work consistently on an Exchange account that is configured in Online mode...

 Change the Deleted Behavior

1.        Open the Registry and navigate to    HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Options\General
2.        Look for the DelegateWastebasketStyle DWORD (if it doesn’t exist, create it)
3.        Change its value to
a.        8 - Stores deleted items in your folder
b.        4 - Stores deleted items in the shared mailbox folder
4.        Restart Outlook

 Now any e-mails deleted from that shared mailbox will go into the Deleted Items folder of the shared mailbox.

IMPORTANT: make sure that the delegate user has at least Author level rights for the Deleted Items folder of the owner's mailbox. If the delegate does not have these rights, and this registry option is set to 4, then either the item is deleted permanently or the user receives an error message

Error 3: Troubleshoh@gmail.comoting Outlook Calendar Problems

If your users are experiencing issues with their Outlook Calendar, Microsoft recently released a tool to help administrators in these situations, the Calendar Checking Tool for Outlook (also known as CalCheck).
This is a command-line tool that opens an Outlook profile on the local machine, opens the Outlook Calendar and checks permissions, free/busy information and auto booking, for example. The tool then checks each item in the calendar for any problems.
The calendar to by analyzed must reside on an Exchange Server and this tool does not work with IMAP, POP3 or any other non-Exchange mail servers.

DOWNLOAD: To download the simply,


Instructions for how to use this tool:

After you install this download, open a Command Prompt window in the directory that contains the CalCheck.exe file. To obtain detailed instructions, type the calcheck /? command in the Command Prompt window, and then press Enter. 

Here is a list of command-line switches for CalCheck.exe:

CalCheck [-P
 <Profile name>] [-M <Mailbox name>] [-S <Server name>] [-O<path>] [-A] [-F] [-R] [-V] [-No]
CalCheck -?

If you found this information valuable, please leave your comments for me.

                                                              Arun Chaudhary
                                                 Email me: 

Very Useful Exchange Cmdlets

Some useful EMS Cmdlets to get the valuable information from Exchange Server 2010, as per your Organization requirements:

Number of E-mails Sent and Received by one User

This is very powerful script used to check the Send & Receive Emails by a user:

[Int] $intSent = $intRec = 0
Get-TransportServer | Get-MessageTrackingLog -ResultSize Unlimited -Start “10/01/2012” -End “11/01/2012” -Sender "" -   EventID RECEIVE | ? {$_.Source -eq "STOREDRIVER"} | ForEach { $intSent++ }
Get-TransportServer | Get-MessageTrackingLog -ResultSize Unlimited -Start “10/01/2012” -End “11/01/2012” -Recipients "" -EventID DELIVER | ForEach { $intRec++ }

                                Get Recoverable Items folder size per Database

This script is used to get the size of recoverable items of per Mailbox-Database:

Get-MailboxFolderStatistics nuno –FolderScope RecoverableItems | Select Identity, FolderAndSubfolderSize
[Int] $total = 0
(Get-Mailbox -Database MDB16 -ResultSize Unlimited) | ForEach {$total += (Get-MailboxFolderStatistics $_ -FolderScope RecoverableItems | ? {$_.Identity -match "Recoverable Items"}).FolderAndSubfolderSize.ToMB()}

This script is used to update or modified the IP Address on Exchange Receive Connector:

# Get Receive Connectors to update
$recCons= Get-ReceiveConnector | Where {$_.Name -match"Unauthenticated SMTP"}
ForEach ($recConin$recCons)
      Write-Host"Updating", $recCon.Identity
       $recCon.RemoteIPRanges -=""
      $recCon.RemoteIPRanges -=""
       Set-ReceiveConnector $recCon -RemoteIPRanges$recCon.RemoteIPRanges

This script is used to create a Transport Rule in Exchange Serve 2010:

New-TransportRule “Block Non Delivered e-mails from Nuno” -Comments ”Prevent Nuno from forwarding NDRs e-mails” -From “” -SentToScope “NotInOrganization” -SubjectContainsWords “FW: There was an error sending your mail”, “FW: Mail delivery failed”, “FW: failure notice” -RedirectMessageTo “”-Enabled $True

This script is used to check the full access permissions to any other User-Mailbox:

Get-Mailbox -Resultsize Unlimited | Get-MailboxPermission -User | ? {$_.AccessRights -match "FullAccess" -and$_.IsInherited -eq $False} | Select Identity
ForEach ($mbx in (Get-Mailbox -Resultsize Unlimited | Select Identity)) {Get-MailboxPermission $mbx.Identity -User | ? {$_.AccessRights -match "FullAccess" -and $_.IsInherited -eq $False} | Select Identity}

This script is used to make the comparisons between the Primary & Secondary IP Address:

[String] $strPrimaryAddress
[String] $strSIP
[Array] $arrCollection = @()

ForEach ($mbx in (Get-Mailbox -ResultSize Unlimited))
       # Initialize object to hold all the information
       $mbcomb = "" | Select "Display Name", "Primary SMTP Address", "SIP"
       # Reset variables
       $strPrimaryAddress = $strSIP = $NULL

       # Check all the e-mail aliases the user has
       $mbx.EmailAddresses | ForEach {
              If ($_.IsPrimaryAddress -and $_.Prefix -match "SMTP") { $strPrimaryAddress = $_.SmtpAddress }
              If ($_.PrefixString -eq "sip") { $strSIP = $_.AddressString }
       # Compare the primary SMTP with the SIP address
       If ($strPrimaryAddress -ne $strSIP)
              $mbcomb."Display Name" = $mbx.DisplayName
              $mbcomb."Primary SMTP Address" = $strPrimaryAddress
              $mbcomb."SIP" = $strSIP
              $arrCollection += $mbcomb

# Print or export all the results
$arrCollection | FT
#$arrCollection | Export-Csv D:\Scripts\"SMTPvsSIP_$(Get-Date -f 'yyyyMMdd').csv" -NoType

get-mailbox | where {$_.UseDatabaseQuotaDefaults -ne $true}

Get-Mailbox Database Statics

This command is used for get the Mailbox Database statics:

[PS] C:\>Get-MailboxDatabase 
Name                           Server          Recovery        ReplicationType                                        
----                           ------          --------        ---------------                                        
Mailbox Database 0020849825    Exchangeby-Arun-Ex001  False           Remote                                                 
Mailbox Database 2       Exchangeby-Arun-Ex-02  False           Remote                                                 

If you like these scripts, please leave your comments here.

                              Arun chaudhary
                             Email me:



# Script for creating a Role that can manage distributions groups but can't create new ones


# Parameter to get a different name than default for the new Role
Param([string]$name="MyDistributionGroupsManagement",[string]$policy="Default Role Assignment Policy",[switch]$creategroup,[switch]$removegroup)

# Help Function
Function Show-Help {

This script is will create or manage a management role designed to allow users to modify groups that they already own
but not create or remove any new distribution groups.

-name           Name of the managment role you want to create or modify
                    Defaults to: `"MyDistributionGroupsManagmenet`"
-policy         Name of the Role Policy you want to assign the role to
                    Defaults to: `"Default Role Assignement Policy`"
-creategroup    Adds or Removes the ability of the Role to Create DLs

-removegroup    Adds or Removes the ability of the Role to Remove DLs

This will Use the default names and Policy and will create a role that cannot
Create or remove groups but can still modify them.  If the role already exists
It will modify it by removing or adding the abiltity to create and remove groups
based on the current state.

Manage-GroupManagementRole -CreateGroup -RemoveGroup



# Function to modify a role by removing or adding Role Entries
# If no action is passed we assume remove
# $roleentry should be in the form Role\Roleentry e.g. MyRole\New-DistributionGroup
Function ModifyRole {
    Switch ($action){
        Add {Add-ManagementRoleEntry $roleenty -confirm:$false}
        Remove {Remove-ManagementRoleEntry $roleenty -confirm:$false}
        Default {Remove-ManagementRoleEntry $roleenty -confirm:$false}

If (($creategroup -eq $false) -and ($removegroup -eq $false)){

# Test if we have a role that already has that name
If (([bool](Get-Managementrole $name -erroraction Silentlycontinue)) -eq $true){
    Write-Warning "Found a Role with Name: $name"
    Write-Warning "Trying to Modify Existing Role"
Else {
    # Create the new Management Role
    Write-Host "Creating Managmenet Role $name"
    New-ManagementRole -name $name -parent MyDistributionGroups

# Determine if we have the New and Remove Role Entries on the Role Already
$create = [bool](Get-managementroleentry $name\New-DistributionGroup -erroraction Silentlycontinue)
$remove = [bool](Get-managementroleentry $name\Remove-DistributionGroup -erroraction Silentlycontinue)

# If we have the switch CreateGroup add or remove the RoleEntry for New-DistributionGroup
If ($creategroup -eq $true){
    If ($create -eq $true){ModifyRole $name\New-DistributionGroup Remove;Write-Host "Removing ability to create distribution Groups from $name"}
    elseif ($create -eq $false) {ModifyRole $name\New-DistributionGroup Add;Write-Host "Adding ability to create distribution Groups to $name"}

# If we have the switch RemoveGroup add or remove the RoleEntry for New-DistributionGroup
If ($removegroup -eq $true){
    If ($remove -eq $true){ModifyRole $name\Remove-DistributionGroup Remove;Write-Host "Removing ability to create distribution Groups from $name"}
    elseif ($remove -eq $false) {ModifyRole $name\Remove-DistributionGroup Add;Write-Host "Adding ability to create distribution Groups to $name"}

# Test if we have the assignment for the Role and Policy
# If we do ... write a warning
# If not create a new assignment
If (([bool](get-managementroleassignment $name-$policy -erroraction SilentlyContinue)) -eq $true){
    Write-Warning "Found Existing Role Assignment: $name-$policy"
    Write-Warning "Making no modifications to Role Assignments"
Else {
    # Assign the Role to the Role Policy
    Write-Host "Creating Managmenet Role Assignment $name-$policy"
    New-ManagementRoleAssignment -name ($name + "-" + $policy) -role $name -policy $policy

If you feel this is usefull for you, leave a comment for me

 Arun Chaudhary
Email me:

Set-DistributionGroupOwners (Script)


This script is used to set the Distribution-Group Owners, this script is develop by-Microsoft.


Param($DistributionGroup = $null,$GroupOwner = $null)

# Sets all users in the DL listed in $dn_storage as managing the DL they are listed in
Function SetUserAsOwners {
Param ([string]$DistributionGrouptoSet)

# Handle single DG vs Processing everything
if ($DistributionGrouptoSet -eq ""){

# Get a list of all groups that we need to manipulate
$Groupstoset = Get-distributiongroup -filter "($dn_storage -like 'CN*')"

# Set our Grouptoset to just the single group that was passed into the function
else { $Groupstoset = Get-distributiongroup $DistributionGrouptoSet }

# Process each group
$Groupstoset | foreach {

# Seting the array of users to null so that it doesn't keep adding to the array with each loop
[array]$DNOfUserstoset = $null

# Setting CheckedUserstoSet to Null to ensure we don't continue building the array over time
[array]$CheckedUserstoset = $null

Write-Host "Setting Members of" $_.($dn_storage) "as owners on" $_.identity

# Get a list of the users that need to be listed as managers of the DL
# This will preform this search recursively
$Userstoset = Get-ADGroupMember $_.($dn_storage) -recursive

# Convert the output from get-adgroupmember into an array of DNs
$Userstoset | foreach { [array]$DNOfUserstoset = $DNOfUserstoset + [string]$_.distinguishedname }

# Verify that each of the users in the array is a mailbox
# This eliminates any nested groups / contact / or users and just leaves us with the mailboxes
$DNOfUserstoset | foreach {

If (Get-mailbox $_ -erroraction silentlycontinue){[array]$CheckedUserstoset = $CheckedUserstoset + $_ }
else {}

# Throw any duplicates out of the $checkedUsersToSet
$CheckedUserstoset = $CheckedUserstoset | Select-Object -Unique

# Set that list of mailboxes as owners of the DL
# Throw a warning if we didn't get any valid objects returned
if ($CheckedUserstoset -eq $null){Write-warning "Didn't Find any valid objects in Owning Group"}
else { Set-distributiongroup $_.identity -managedby $CheckedUserstoset -BypassSecurityGroupManagerCheck }



# Setup a DL as "owner" of another DL
# This will place the DN of DistributionGroupOwner into the $dn_Storage file of the Distribtiongroup
Function SetDNofGroupOwner {
Write-Host "Setting" $GroupOwner "as the owner of" $DistributionGroup

# Build and Execute the command that we need to make this change
$commandtorun = "Set-Distributiongroup -identity `'" + $DistributionGroup + "`' -" + $dn_storage + " `(get-adgroup `'" + $GroupOwner + "`'`)`.distinguishedname"
Invoke-Expression $commandtorun

# Main Body
# ===============================

# Attribute to use for storing DN of group owner
# !!!! --- Change this to the correct attribute for your Organization --- !!!! #
$dn_storage = "CustomAttribute5"

#Check the OS Version
if ([system.environment]::OSversion.Version.Major -eq 6 -and [system.environment]::OSversion.Version.Minor -ge 1 -and (get-wmiobject Win32_OperatingSystem -comp .).Caption.Contains("R2")  ) {}
else {
Write-Error "The Operating System requirements are not met, you must be running at least Windows 2008 R2"

# Check to see if the Exchnage snapin is loaded, if not load it
if ((Get-PSSession | where {$_.configurationname -eq "Microsoft.Exchange"}) -eq $null) {
Write-Host "Loading Exchange Shell"

# Load up Exchange Powershell so we have the Exchange cmdlets
# !!!! --- You will need to change this Path if your Exchange Install is not in the Default Location --- !!!! #
. 'c:\Program Files\Microsoft\Exchange Server\v14\Bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

# Import the AD management Module
Import-Module ActiveDirectory

# If no parameters passed process all Distribution groups
If (($GroupOwner -eq $null) -and ($DistributionGroup -eq $null)){ SetUserAsOwners }

# If we have a Distributiongroup but not an owner then just process that DL
elseif (($GroupOwner -eq $null) -and ($DistributionGroup -ne $null)){ SetUserAsOwners -DistributionGrouptoSet $DistributionGroup }

# If we have DL owner and don't have a DL then we need to generate an error
elseif (($DistributionGroup -eq $null) -and ($GroupOwner -ne $null)) {Write-Error "Incorrect Syntax"}

# If none of the above then we should have both DL and DLOwner so set the DL owner attribute
else { SetDNofGroupOwner }

If you feel this is valuable, please leave your comments for me.
                                        Arun Chaudhary

Monday, October 22, 2012

Exchange Server 2010 Data center switch over trouble-shooter

Exchange Server 2010 Data center switch over trouble-shooter

Arun Chaudhary
(Exchange 2010)
Exchange Administrator, Book writer,
 Freelancer trainer of Exchange Server

About me: I am working as an Exchange Administrator & also a freelancer trainer of Exchange & other Microsoft Servers; I have 6+ years experience in Microsoft servers. I have written many articles on different – different topics & given Exchange Server training for more than 250 Indian & Inter national clients.


Exchange 2010 has a very good feature that called Data centre Activation Coordination (DAC) mode, which is designed to prevent split brain at the database level during switchback procedures that are being performed after a data centre switchover. The major advantage of enabling the DAC feature is that you can use built-in recovery cmdlets to perform the data centre switchover and switchback.

But before going to run the built-in cmdlets you should have to understand properly these factors.

  • Are all Exchange Servers available in Primary data centre?
  • Is network connectivity available between the primary and remote data centre?
  • Is Exchange deployed in a topology with a single Active Directory site or multiple sites?

When you got the required information regarding above points, now you can plan what command will be run & where will be run.

Now Administrator can run the built-in cmdlets but he required some more information like;

·        How do I verify that stop-databaseavailability group was successful?
·        How do I verify that restore-databaseavailabilitygroup performed the correct steps?
·        When is it appropriate to run start-databaseavailailitygroup?

Each of these required a different set of verification steps, before you start.

Data centre Switchover Tool: this is a very good tool to perform the data centre switch over, it’s a kiosk-based power point application that allows administrators to work on the following steps.

  • What commands to run and where to run them
  • How to verify the commands completed successfully.
  • How to walk through a Data centre Switchover from the Mailbox server / database availability group perspective.

                             Arun Chaudhary
            Read my Books:
1.      “The complete guide from Exchange Server 2003 to Exchange Server 2010 migration”
2.      “Open Source Email Servers

Wednesday, October 3, 2012

Microsoft Outlook Configuration Analyzer Tool:

Microsoft Outlook Configuration Analyzer Tool:

Arun Chaudhary
(Exchange 2010)
Exchange Administrator, Book writer,
 Freelancer trainer of Exchange Server

About me: I am working as an Exchange Administrator & also a freelancer trainer of Exchange & other Microsoft Servers; I have 6+ years experience in Microsoft servers. I have written many articles on different – different topics & given Exchange Server training for more than 250 Indian & Inter national clients.

Hi friends,

As per my promise to you, I am again coming with a brand new article of my Exchange Server & Outlook series.
May be you are aware of lot’s of tool in Exchange Server & working on them. Outlook always have some issue, because most of the time user raise the issue that their Outlook profile is corrupt or have problems in configuration settings.

So a good Exchange Administrator never goes to the user desk to fix them they are very advanced & use Microsoft or any other third party tools to fix the problem.

In this article I am gonna discuss with you a very nice tool of Microsoft, called Outlook Configuration Analyzer Tool (CAT).

Introduction to OCAT:

OCAT basically design by Microsoft to scan, detection of known issues and reporting of problems or Outlook configuration settings.
Microsoft has two version of OCAT, V 1 & V 2.
In This article I am gonna discuss with you on what’s new in OCAT v2.

New Features of OCAT v2

Ø      Automatic downloading of new detection rules: Microsoft create new rules to detect issues or to collect additional information about user Outlook profile, they post a new updated rule file on the internet. Using the OCAT v2 configuration, OCAT will automatically check for a new rule & prompt you to update it.

Ø      Automatically download of OCAT installation files: If Microsoft post any new update or fix in a .msi file to the internet, OCAT v2 automatically check it & prompt to you to install it. So like this it also provide you less headache to check the latest updates.

Ø      CalCheck Tool: Now with the OCAT v2, Microsoft add CalCheck tool with v2. CalCheck is basically used to scan & report any known issue of your primary calendar.

Ø      Add more rules in OCAT v2: Microsoft add approx. 75 new rules in OCAT v2.

Ø      OCAT v2 scan the outlook 2003 now in online time, not like offline time in V1.

Ø      Cmdlets add: OCAT v3 support cmdlets (OCATcmd.exe) to run from the command line.

Installation requirements for installing the OCAT

·        OS should be Win XP SP3, Vista SP2 or Win7.
·        MS outlook 2003, 2007 & 2010.
·        .Net framework 2.0 required.

Arun Special Note: If you have OCAT v1 installed, the installation of OCAT v2 will automatically remove v1 for you.

                                                                                 Arun Chaudhary

Site Mailbox in Exchange 2013 & Outlook 2013:

Site Mailbox in Exchange 2013 & Outlook 2013:

Wednesday, 03 October 2012

Arun Chaudhary
(Exchange 2010)
Exchange Administrator, Book writer,
 Freelancer trainer of Exchange Server

About me: I am working as an Exchange Administrator & also a freelancer trainer of Exchange & other Microsoft Servers; I have 6+ years experience in Microsoft servers. I have written many articles on different – different topics & given Exchange Server training for more than 250 Indian & Inter national clients.

Microsoft include many exiting features in the Exchange 2013, in my previous articles on my blog regarding the Exchange 2013, I discuss about the new features of Microsoft Exchange Server 2013 {go the}.

In this article, I am going to introduce you one more exiting feature of Exchange Server 2013 & Outlook 2013 called Site Mailbox. Site Mailbox is the brand new feature of Exchange Server 2013 & provides you ability to access your emails & SharePoint documents together on a central point.

A Site Mailbox is like a central filing cabinet; provide you a single place to access your emails & projects regarding documents that can be accessed & edit by your site members. When any project member used Site Mailbox to access his / her emails & documents, that time any other site member can also access the documents & can modification.

In Site Mailbox users documents or contents kept where it belongs. Exchange Server stores the email, which provide by users with the same message view for email conversations that they use in their every day for their own mailboxes. Exchange Server is responsible to synchronize with the Share point server to create the documents view in outlook.
An Administrator can apply compliance policies on the site mailboxes.
I wana discussed some questions, which come in mind before I go to configure the Site Mailbox.

ü      How to Filing emails and documents from Outlook 2013: It’s very simple in Outlook 2013, just drag & drops the emails, documents & attachments in Site Mailbox.

ü      Management and compliance: Usually in the organizations, users have only limited rights on the Share point sites, but in the new SharePoint also makes it easier for the end users to create their own SharePoint sites, to integrate shared emails into a new site, users just have to use only the Site Mailbox app with their site.

Site mailboxes can become part of eDiscovery search scopes and the emails & documents of Site Mailboxes can be put on legal hold. Administrator can set a lifecycle policy on the SharePoint sites to define the retention period on the Site Mailbox.

ü      Present Emails & documents together: Users always wants their emails & documents together in context- from the Outlook or SharePoint sites. This solution is provided by the Site Mailbox.

ü      Difference between the Site Mailboxes, Shared Mailbox & Public Folder:

·        In the Site Mailbox users work on shared projects & keep their emails & documents.
·        In the shared mailbox a group of people work on the behalf of a virtual entity, they are triaging incoming emails against a shared mailbox and respond on the behalf of the virtual entity (ex: helpdesk@exchangeby-arun.lab).
·        In the Public Folders documents can’t be store, until they don’t support co-authoring or version management like SharePoint.

Some more exiting features of Site Mailbox:

Ø      You can add Site Mailbox as a recipient in the important discussion, so it will be kept a copy of the important discussion.
Ø      You can forward any document from the site mailbox.
Ø      You can drag & drop multiple documents from site mailbox to your inbox.
Ø      Now you can also add your Site Mailbox or documents folder in your favourites with the same name, just on a right click & select ‘Show in Favourites’.
Ø      If you are a user who can’t remember too much SharePoint sites URLs, then ………. Yes in Site Mailbox, just right click any document & click on ‘Open in Web Browser’.
Ø      After finishing your projects, you can easily remove Site Mailbox from your Outlook, just right click on Site Mailbox & click on ‘Close “Exchangeby-Arun Lab (Project Name)”.
Ø      If you want to manage you’re all the projects regarding Site Mailbox (in the case when a user is working in multiple projects), just right click on your personal mailbox & click on “Manage All Sites Mailboxes….”

Arun Special Notes: Site mailbox is only available in Outlook 2013, not in OWA.

                                                                      Arun Chaudhary