Archive for the ‘Migration’ Category

Balance mailbox count over Databases in Exchange 2007 and 2010

July 13, 2011 Leave a comment

Quick one;


Has a fab little script that will generate you a PS1 script to automate the mailbox count over multiple databases.


It only works with count so far – but the author says they will eventually re-write it to count size distribution also.


Handy as hell when mass-provisioning mailboxes using, oh I don’t know, Quest tools.


Cleaning up Distribution Lists after a Quest migration

April 19, 2011 Leave a comment

I noticed the other day that the Quest imported DL’s are a tad messy – lots of “userid.postoffice.domain” references.


Wrote the following to clean it up – should work without too much butchering into your own environment (but test first!)


$list=get-distributiongroup -ResultSize Unlimited
$global:progress = $list.count
foreach($line in $list){
$groupname = get-group $line
$emailaddress = $groupname.DisplayName
$emailaddress = $emailaddress.replace(" ","")

set-distributiongroup -Identity $line.DisplayName -EmailAddressPolicyEnabled $false
set-distributiongroup -Identity $line -SamAccountName $emailaddress -WindowsEmailAddress "$emailaddress@domain.local" -EmailAddresses "$"
set-distributiongroup -Identity $line.DisplayName -EmailAddressPolicyEnabled $true
Write-Progress -activity "Changing DL’s" -status "Percent complete: " -percentComplete (($i / $progress)  * 100)    

Quest Error Log PowerShell

April 18, 2011 Leave a comment

Some handy PowerShell cmdlets to parse out nastily long Quest NDS Migrator logs Smile



Select-String finalerror.txt -Pattern " Error  " | select Line | Format-Table -Wrap | Out-File errors.txt

Select-String finalerror.txt -Pattern "(The process cannot access the file because it is being used by another process)" | select Line | Format-Table -Wrap | Out-File err-inuse.txt

Select-String finalerror.txt -Pattern "(Invalid path, or path too long.)" | select Line | Format-Table -Wrap | Out-File err-toolong.txt

Quest set-executionpolicy

March 4, 2011 Leave a comment

The Quest pre-requisites for GroupWise to Exchange migration (for Exchange 2010) has the following command;

Also: Depending on your environment, you may need to run this command to enable the
PowerShell layer using remote PowerShell:

get-executionpolicy | set-executionpolicy unrestricted

This is incorrect on Windows XP SP3 (PowerShell 2) and should be;

set-executionpolicy unrestricted

Enable / Disable Circular Logging on all databases

February 15, 2011 3 comments

There are some cases where Circular logging can be helpful – when migrating a large amount of email in from another system for example.

Get-StorageGroup | Set-StorageGroup -CircularLoggingEnabled $true

However, remember to re-disable it when done;

Get-StorageGroup | Set-StorageGroup -CircularLoggingEnabled $false

The Information Store must be restarted for either of these changes to take place – if you have a DAG then bounce over the active copy to another server (and back if required) to do this.

As correctly pointed out be MB the above is 2007 shell not 2010 (my bad!!)

The below is 2010 shell instead;

Get-MailboxDatabase | Set-MailboxDatabase -CircularLoggingEnabled $true

Bizarrely I must have been thinking of 2010 when I wrote this as I clearly mention DAG’s

However both require an Information Store restart – failover usually achieves this just make sure to take all databases on that node over and if in doubt then restart the service 😀

Sorry guys!!!!

Having problems when migrating into 2010 SP1?

January 20, 2011 6 comments

Just a quick one,

I work primarily as a migration consultant – so most of my “day job” is to migrate people from one technology to another.
A big bulk of this is GroupWise (or Notes) to Exchange migrations – typically using migration tools such as Quest Groupwise Migrator for Exchange.

Taking the GroupWise to Exchange as an example – you can be quite often pulling email from 7/8 different physical servers at once – so to aid in this I personally would create multiple migration workstations which then generates (literally) hundreds of connections into Exchange.

SP1 introduces some CAS throttling – this may have been in place pre-sp1 but didnt seem to have any effect.

However in SP1 you may find yourself unable to connect to the CAS/MAPI service if you already have a lot (>100) connections.

Error logged will be;

Process Microsoft.Exchange.RpcClientAccess.Service.exe (PID=2132). User ‘Sid~NTNET1\USERNAME~RCA~false’ has gone over budget ‘235’ times for component ‘RCA’ within a one minute period. Info: ‘Policy:DefaultThrottlingPolicy_c05f158f-9c0b-4289-ae1b-4717eee77548, Parts:CAS:234;’. Threshold value: ‘100’.

To fix, remove the throttling via the following PS script;

$default = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
$default | set-throttlingpolicy -RCAMaxConcurrency $null
$default | set-throttlingpolicy -RCAMaxConcurrency $null -RCAPercentTimeInAD $null -RCAPercentTimeInCAS $null -RCAPercentTimeInMailboxRPC $null

Disabling Password Sync on Novell Client from VBS

September 10, 2010 Leave a comment

Public Function DisableSync
Const KEYPATH = “Software\Novell\Network Provider\Netware Utilities”
Const KEYNAME = “ShowNTConnectionsInChangePasswordList”
End Function

Now call “DisableSync” from the top of the script and it should disable the ability to change the AD password from within the novell gina’s Ctrl+Alt+Del (required if you have IDM)