A quick and nice script to get all groups and their member users exported in PowerShell… you might need that for multiple reasons, and getting them quick is a nice thing…

Today I needed that for a customer who asked for it because he was cleaning his 1000 users active directory, and lucky me, the force of PowerShell can just do anything!

Script:

$groups = get-adgroup -filter *
foreach ($group in $groups)
{
    echo "Group: $group - Member list:"
    get-adgroupmember -identity "$group" | select Name, SamAccountName | ft -au
}

The above will just display the output on the screen, so in order to have it in a file, you can save the script to a file then pass it to Out-File with your desired file name…

Example:

Get-ADGroupsAndMembers.ps1 | Out-File c:\all_users_and_groups.csv

I have attached the script file (.ps1) into this post so you can quickly download it, have fun… … Read the rest “PS: Get all active directory groups with their member users”

This is just a quick guide to decommission an old Exchange server 2007, since now 2010 and 2013 and even Office365 are everywhere, 2007 is considered obsolete same as 2003 during the days of 2010…

I am not going to get in details about this, just I will summarize the guide by putting the steps and the link to information/how to do it… the whole process consists of the following steps:

Step 1: Remove old OAB: http://social.technet.microsoft.com/Forums/en-US/f26f4d92-4792-4d28-9617-ff9095d94596/exchange-server-2007-error?forum=exchangesvrsecuremessaginglegacy (follow the first part steps 1, 2, 3, 4 from the answer).

Step 2: Remove the folders replicas from the public folders database if it exists: http://technet.microsoft.com/en-us/library/bb201664%28v=exchg.80%29.aspx (follow the section “To delete user and system public folders)

Possible (almost sure) errors: Object is read only because it was created by a future version of Exchange: http://social.technet.microsoft.com/Forums/en-US/f26f4d92-4792-4d28-9617-ff9095d94596/exchange-server-2007-error?forum=exchangesvrsecuremessaginglegacy (follow the last part steps 1, 2, 3 from the Read the rest “Guide to decommissioning old Exchange 2007 server”

In order to get a list of all (or part) of the mailboxes and view their sizes, simply use the following PS script:

Get-mailbox | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName, ItemCount, TotalItemSize, Database -auto | Out-File c:\mbx_sizes.txt

The above command, will get all the mailboxes, and list their sizes and the database they are member or, then output the result to a text file called mbx_sizes.txt…

You can change the sorting to be Ascending, to have the smallest mailbox on top…

Also, you can get the sizes for mailboxes in a specific database by:

Get-mailbox -Database <DATABASE_NAME> | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName, ItemCount, TotalItemSize, Database -auto | Out-File c:\mbx_sizes.txt

Replace <DATABASE_NAME> with the actual name of your database.

And of course you can do it for 1 mailbox as well by using:

Get-MailboxStatistics -Identity <USER_ID> | ft DisplayName, ItemCount, TotalItemSize

Hi, so I had an implementation for Lync 2013, consist of an FE and Edge server, of course the front-end went smooth and was ready in no time, but I had an annoying problem on the Edge after I installed it, that kept me busy for 2 days, until I found out what was going on, on it…

The replication was not working between my FE and the Edge server, and when I type:

Get-CsManagementStoreReplicationStatus

I see false on the Edge server, even if I run Invoke-CsManagementStoreReplication many times, I still don’t get anything on the Edge…

Because internal certificates are internal only, I used a local CA to issue the certificates on FE, and on the private side of the Edge as well, my CA was an intermediate one for a root CA on the same domain, so the certificate chain had 2 certificates in it, (one for intermediate, … Read the rest “CMS replication issues between Lync 2013 FE and Edge when using internal CA for Edge”

Due to some real life pressure (some are related to my current work) I was driven away from the blog… until the hosting has expired and I lost everything was on it…

Now I’m trying to recover the first blog contents depending on old archives from it on the web, such as (http://web.archive.org/)… thanks to God that there are some archived snaps of the blog and my other blogs so I can take the texts out of them and put them here again…

This second blog should be in much better state and under better care, I have changed the address and title as well to be something better than the old one, but still typing the address of the old blog will redirect to here.

Also I will try my best to republish old posts with their same date to keep the URL structure in case someone came here … Read the rest “First blog got deleted and everything was lost…”

One migration I did, the customer was using ISA server 2006, the customer did not like ISA and wanted to get rid of it, despite my opposite opinion of ISA as a good and perfect firewall/proxy solution, I helped the customer or at least tried to move him into a MikroTik router that was installed in his site… the amount of rules and configurations done on ISA made that quick transition so slow and time consuming…

So to save both our migration and time, I decided to keep ISA for him now and just allow access to all Google domains for now so the migration can go well…

All I had to do was creating a domain set and add in it:

  • *.google.com
  • *.gmail.com
  • *.gstatic.com
  • *.googleusercontent.com
  • *.googleapis.com

I allowed HTTP, HTTPS traffic coming from internal network to these domains, and every user even the users who did not have internet … Read the rest “Allowing access to Google Apps through ISA/TMG”

Sometimes you get a sudden need to forward bulk users’ mail to external destination… in normal days, you would create a mail contact, then forward the selected user’s mail to the new external contact.

Now what if you got a large number of contacts to forward? well, you can either:

  1. Manually create all the required mail contacts, then assign each user to each contact.
  2. OR THE BETTER WAY: Use the magic of PowerShell!

This is a very simple and quick procedure…

First, you will need to create the contacts, which you can find how in the following post: PS: Creating bulk mail contacts

Then with another script, you will forward each user to his corresponding mail contact item:

Import-CSV "C:\ContactForward.csv" | Foreach{Set-Mailbox -Identity $_.LocalUser -ForwardingAddress $_.ForwardAddress -DeliverToMailboxAndForward $true}

You can either keep the attribute “-DeliverToMailboxAndForward $true” to keep a copy of the message in the original mailbox or remove it.Read the rest “PS: Bulk forwarding mailboxes to external addresses”

Below is a useful script to create bulk contacts in Exchange Management Shell:

Import-CSV "C:\NameList.csv" | Foreach{New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalAddress}

You need to have the following prepared before you use the script:

  1. A CSV file contains 2 headers: Name, ExternalAddress, with all the contacts list that you want to create.
  2. Save the CSV file in C:\ (to be completely complied with the script above, otherwise save it where you want, but make sure you specify it’s full path in the script above instead of “C:\NameList.csv”.

To make it a bit easier, here is the script ready, just open EMS and run it from there after you make sure the file is ready…

Bulk-MailContact

I’ve done some migrations recently from Microsoft Exchange to Google Apps… While the migration itself went successful, I came across many serious issues that affected the overall satisfaction of the customer…

I tried my best to solve and workaround those issues during the migration process, and it seems everything went well after what I did…

One of the major problems was, the local users were unable to send to the users who got migrated to Google already!, this problem was because of simply because they are still on Exchange server, and the emails they are sending to their colleagues basically never leave Exchange to be routed outside to Google.

One workaround I managed to use was to put the testing domain that Google gives to the Google Apps users to a good use (MAIN_DOMAIN.test-google-a.com)

I have created mail contact item for every user on the Exchange points to … Read the rest “Some points to remember while migrating from Microsoft Exchange to Google Apps”

Hi

It has been a while since I did a transition for Exchange server 2010, and last days I did one…

Today I was doing the final part of it which is decommissioning the old server, I did it but I had to do some extra work to finish the job…

I had moved all the users mailboxes to the new server, and the database seems empty, but in fact, it was not, because there were some system mailboxes called Arbitration mailboxes

So when trying to uninstall the server, I got the error about existing mailboxes still on the database of the server I want to remove!

All I had to do is move these mailboxes to the new server and I was done (NEVER REMOVE THESE MAILBOXES UNLESS YOU ARE REMOVING THE LAST SERVER IN THE ORGANIZATION)

  • The first step is to list all the arbitration mailboxes
Read the rest “Unable to uninstall Exchange server 2010 while mailbox database has un-moved arbitration mailboxes”