Recently a customer contacted me with an issue with one of their mail-enabled Security Groups. They were trying to set both the MemberJoin and MemberDepart settings to Closed per best practices. Well it turns out that the ‘Closed’ setting is actually a default for mail-enabled Security Groups. PowerShell options are available for changing these values from Closed to Open or Approval. However, my customer was unable to do so. I then set about seeing if this were normal and if not normal, why their environment was different.
In a test Exchange 2016 environment I created a brand new mail enabled security group using the EAC to do so. The new group had a manager as well as some members. An initial look at the group in PowerShell shows the group configured with the defaults documented by Microsoft: Continue reading
After working on this book for the past 9-12 month, the work is done. This book is basically taking the information from our first book, Practical PowerShell Exchange 2016, and translating it so the content would work for Exchange Online. Sounds simple right? Yup, that’s what I thought to. Until I started to dig in and see all of the major and minor nuances I realized it was going to take quite some work to make this happen. Sections on server configurations, WMI and even minor things like parameters were all different in Office 365. In addition, I had to add material for the Security and Compliance Center and completely change how to trace or track an email message in the service. All of this added up to rearranging and rework, which added up to quite a bit of time.
In the ends I am quite happy with the book and think it adds enough value by itself. The book is over 400 pages in-length and certainly covers a lot of material that is cloud-only that would not be in the Exchange 2016 book. So if you would like to purchase a copy, click on the book image below. Take a look at the sample chapter and see if it fits your needs.
A year in the making, my next book from my Practical PowerShell series covers Exchange Online:
This book is a complete redo of the Exchange 2016 book with all content revised, stripped, added and modified to be specifically cover Exchange Online. The new book is approximately 450 pages in length and it will be sold on our website (www.PracticalPowerShell.com) and offered on Amazon, Barnes and Noble and more. A brand new Foreword was written by fellow Microsoft MVP and MCM Jeff Guillet!
The available formats for the book will be the standard paperback, PDF and ePub. The best value will of course be the premium package which has the digital and paperback versions of the book.
Look for the book to be available around March 31, 2018.
Fellow Office Server and Services MVP, Jeff Guillet, has posted a good article on this over at his blog. Please go read it and then vote for this improved experience over at User Voice with his provided link. You are limited to one vote a day, but I think as a community we can get behind this and move this item forward. Thanks.
Jeff’s Outlook Signature Article
Again while working in a lab environment, I needed to move some mailboxes (the default arbitration, system and more) mailboxes from the default databases to new standardly named databases. Instead of running Get-MoveRequest every 30 seconds or so, I wrote a quick PowerShell script to handle this process for me. The same script could be modified to watch any change state with PowerShell.
In this example, there were three states for mailbox moves when they are created with the New-MoveRequest cmdlets. These are Completed, InProgress and Queued and because I only care about the first, we can effectively ignore any other types. With the script we need to look for the Conpleted state and wait til there are no other mailboxes with a state other than ‘Completed’.
While working in my Exchange labs, I like being able to automate whatever I can because I don’t always have time to spend doing testing in any sort of manual way. For this quick PowerShell article, I am going to discuss a script I call the ‘RandomEmailEmulator.ps1’. This is the first iteration of a script I wrote for generating hundreds of test messages for populating mailboxes in a test environment. The script is a bit rough as I am not using functions for this iteration. I wrote it as more of a proof of concept to see if I can full automate the process as well as put in some neat randomizers for Recipients, number of messages, delivery receipts, attachments, BCC and CC’ing emails.
So the code isn’t simple, but without functions, it really isn’t that complex yet. Here is the jist of what the script does:
- Randomly determine how many regular emails to send [Lines 25 – 31]
- Randomly determine which attachment to send with attachment emails [Lines 33 – 39]
- Randomly determine which Exchange server to relay through [Lines 25 – 31]
- Randomly determine the body of the email to be sent [Lines 41 – 46]
- Store all mailboxes in a $Mailbox variable [Lines 48 – 58]
- Loop to process each mailbox as message sender
- Loop purpose 1 – send emails with no attachment [Lines 71 – 122]
- Loop purpose 1 – send emails with attachments [Lines 127- 178]
- Loop purpose 1 – send emails with a BCC recipient [Lines 184 – 239]
- Loop purpose 1 – send emails with a CC recipient [Lines 245- 300] Continue reading
A typical part of the migrations I work on with my clients is enabling Encryption. The encryption for their emails could be a replacement for a current solution like Iron Mail or PGP. The clients typically want to encrypt confidential emails to their customers, partner organizations or clients.
I am rather familiar with the process that’s been supported for the past 3 or 4 years. Presented on it internally to my team as well as to the user group I run MMCUG and regularly refer to this GREAT blog post when I forget some of the details. It’s an excellent read.
Microsoft has documented it’s intent to change the process and capabilities of email encryption in Exchange online with posts like these: