ENow Exchange & Office 365 Solutions Engine Blog (ESE)

Introducing Microsoft Teams

Posted by Nathan O'Bryan MVP, MCSM on Nov 7, 2016 9:19:02 AM

On November 2 Microsoft introduced “Microsoft Teams,” a new collaboration suite within Office 365. Office 365 already has several different “collaboration” tools available, so what’s new about Teams and why do you need another way to collaborate?

In this blog post, I’m going to break down what I know about Teams so far by addressing common questions and what the future holds for Teams and other collaboration tools in and out of Office 365.

What is “Microsoft Teams”?

Teams is a team-based collaboration tool that is part of Office 365. Teams puts pre-existing Office 365 services into one package that enables corporate teams to work together in a new way.

Read More

Topics: Office 365, Powershell, Microsoft, Office 365 groups, Azure active directory

Manage Office 365 Groups with PowerShell

Posted by Nathan O'Bryan MVP, MCSM on Oct 18, 2016 10:27:38 AM

There are a few very compelling reasons to move to Office 365, and in my opinion, Office 365 Groups are at or near the top of that list. Office 365 Groups combine resources from across Office 365 in ways that are not possible on-premises to give end users interesting new functionality.

Originally, Microsoft envisioned Office 365 Groups as resources that did not need much, if anything, in the way of administrative control. The idea was that end users should be able to control their collaborative experience without pesky admins getting in their way. This, of course, is a ridiculous concept that Microsoft has since corrected. Now Office 365 administrators have the controls necessary to ensure Groups are being used in accordance with organizational data usage policies within their Office 365 tenants.

Read More

Topics: Office 365, Powershell, Office 365 groups

Meet the Azure AD PowerShell Module

Posted by Vasil Michev MVP on Jul 11, 2016 2:30:27 PM

Without any big announcements, a preview version of the Azure AD PowerShell module was released last week. In this article, we will go over the release in a bit more detail and cover some of the changes in comparison with the MSOnline module.

Read More

Topics: Powershell, Azure, Azure active directory, azure ad, Azure AD PowerShell Module

AD FS Claims Rules and Modern Authentication

Posted by Vasil Michev MVP on Mar 23, 2016 8:35:00 AM


Modern authentication has been around for a while now, and it’s great. It brought support for the latest and greatest in authentication and authorization protocols and made new scenarios available. It gave us simple, unified experience across devices and platforms and improvements to the Alternate Login ID feature. On top of all that, it enabled proper support for two-factor authentication for all clients and put an end to the Office 2013 RTM fiasco (bye-bye rich clients, rest in peace app passwords!).

Read More

Topics: Office 365, Powershell, Microsoft

Are You Automating Enough?

Posted by Michael Van Horenbeeck MVP, MCSM on Sep 3, 2015 2:23:00 PM

Earlier this week, Tony Redmond wrote about Jeffrey Snover – also known as the godfather of PowerShell – being promoted to Technical Fellow at Microsoft; one of the highest achievable ranks.

Given that Jeffrey is considered to be the founding father of PowerShell, that does not really come as a surprise, as PowerShell has changed the way we work and interact with systems. And this does not only apply to large-scale environments or cloud solutions like Office 365.

Read More

Topics: Exchange Automation, Active Directory, Powershell, Jeffrey Snover, SharePoint, IT/Dev Connections

How to Migrate Scheduled Tasks from One Server to Another

Posted by Adam Bertram on Mar 18, 2015 11:21:00 AM

With the end of life approaching for Windows Server 2003, a lot of admins are moving services from legacy 2003 servers to Windows Server 2012 R2.  A common task when performing this migration is to move scheduled tasks.  Windows provides some help with this by enabling you to export and import scheduled tasks. But there’s no migration tool to migrate all or only some of the scheduled tasks.  I pity the admin with 50 scheduled tasks running on an old Windows Server 2003 server who has to manually export and import every single one of those scheduled tasks. There has to be a better way. And it just so happens there is!  It’s called PowerShell.

By creating a PowerShell script, you can automate this migration. And you can make it as simple as running a single script—providing the source server name and the destination server name—and watching it work.  However, the script isn’t just going to write itself.  Unfortunately, you must do a little work up front. But I promise you’ll thank me after you’ve exported/imported your hundredth scheduled task.  In this article, I show you how to build your own script to easily migrate scheduled tasks from one server to another.

Read More

Topics: Windows Server, Powershell, Windows Server 2013

Setting Up Your First PowerShell DSC Pull Server

Posted by Adam Bertram on Mar 4, 2015 12:47:00 PM

Windows PowerShell Desired State Configuration (DSC) is a technology introduced in Windows PowerShell v4.0.  DSC sets out to save the IT professional time by essentially building scripts ahead of time. These scripts build configurations on machines and enable us to simply “make it so”—rather than worrying about banging out tons of code on our own.  DSC is a technology that enables us to not only save time—by leveraging pre-built functionality—but it also includes the capability to keep configurations the way we want them.

DSC is a big topic, and I highly encourage you check out this TechNet article on the Windows PowerShell DSC Overview.  This will give you a good start on DSC, but there is also tons of great information out there on this topic as well.  If you’re new to DSC, I highly recommend understanding the basics before you set up your own pull server.  You’ll find that you understand the content better that way, rather than just blindly following instructions.

DSC can be configured to deliver configurations in two different manners; push and pull. The push method is delivered from a server to a computer thus the “pushing” instructions.  This method is generally only used for testing or one-off applications uncommon in a production environment. The pull method on the other hand is another method of delivering instructions to a computer but this time the request is initiated from the client rather than the server.

With that said, let’s get started on setting up our first Windows PowerShell DSC pull server!

Read More

Topics: Powershell, System Admin, System Administrator, pull server, DSC

Powershell: Upping your Parameter Validation Game with Dynamic Parameters Part II

Posted by Adam Bertram on Sep 24, 2014 10:00:00 AM

Now that you've got an understanding of Powershell's advanced functions and the ValidateSet() parameter validation method in the first part of my blog, “Validating Powershell Advanced Function Parameters” you can begin Part #2 of my small post series. Part 2 of this series goes deeper by demonstrating how to dynamically create your sets for ValidateSet() so they aren't hardcoded in. This is essential when dealing with values that may constantly change or even if you just want to practice writing good scripting and have no static references.

So now that I've dazzled you with the magic tab-completion of parameter attributes with ValidateSet() in my last post let's take it one step farther. In that simple instance, I only had 2 values to filter on; True and False. Simply typing them out is easy enough but what if the values you'd like to use aren't so cut and dry? Let me give you another real-world example I just finished today.

I had a need to create a function around the Set-Acl cmdlet. I needed the ability to easily change permissions on files and folders. I found a great example but I needed to set permissions on a ton of files/folders. Also, I really didn't want to have to remember the entire the 4 lines it took to get this done so I decided to create an advanced function to help me out. In my new function I just wanted to type Set-MyFileSystemAcl and add a few parameters like the username and what kind of access I'd like that username to have.

Read More

Topics: Powershell, System Admin, System Administrator

Powershell: Validating Powershell Advanced Function Parameters Part I

Posted by Adam Bertram on Sep 10, 2014 5:31:00 PM

Powershell functions can be created as advanced functions.  These functions behave very similarly to built-in Powershell cmdlets.  Because I can't do without the ability to add a -Verbose or -Debug parameter to my functions now nowadays, these are the only kind of functions I build. Advanced functions, just like "dumb" functions, have parameters.  The parameters are the values that are passed into the function from your script.

Good script functions always include some kind of data validation.  Data validation, in general terms, is simply ensuring that what you pass to your function is what you expect.  For example, let's say I have a function put a True or False value in a file.  You ONLY want the words True or False in there.  If it's not True or False then some other process you've got that reads this file will blow up and your whole company will implode.  This is for the future of your company, dammit!

Therefore, we've established this HAS to be True or False.  How do we do that?  Well, let's say you've got a function like this:

function Set-SomeTrueFalseValue ($Value) {
Add-Content C:\somefile.txt -Value $Value
Read More

Topics: sysadmin, Powershell

Finding and Eliminating XP PCs on Your Network

Posted by Adam Fowler on Jul 9, 2014 11:11:00 AM

Windows XP has famously gone End of Life (EOL) on 8th April 2014. Unless you have a special costly agreement with Microsoft, you should already be off of XP and onto something newer (Vista/7/8) or at least actively working on the upgrades.

If you're upgrading computers now, you should be auditing what's out there and making sure nothing is missed. If you've already upgraded all the computers you know about, it's still worth checking to make sure the XP computers are 100% removed. There are a few ways to achieve this, and I suggest getting an understanding of what you're doing at each step rather than running someone else's all-encompassing script and hoping for the best.

Active Directory Connected Computers

PowerShell can easily provide you with details on all computers known to Active Directory (AD). Most, if not all workstations in your environment should be AD connected, so it's a good start. Computers in AD have the operating system information as part of the object, so it's easy to filter and report on.

Read More

Topics: Windows XP, EOL, XP EOL, Windows XP EOL, Finding windows xp machines, Active Directory, Powershell

Gain visibility into your Office 365 Deployment

See why monitoring makes sense in a cloudy world.