Guest Blog: Bradley Wyatt tells us how he came to create the O365 Administration Center
Guest blogger Bradley Wyatt is the creator of the O365 Administration Center, a free tool that helps administrators manage their Office 365 environment quickly and easily.
My name is Bradley Wyatt, I’m 23 years old and I work as a Network Operations Engineer in Chicago, Illinois. I went to school at SIU (Southern Illinois University), and after studying there, I got a job at the school, working for their IT department. After that, I got my first role in the Managed Services Provider (MSP) world working for Mayer Networks, a company that handles clients in Southern Illinois and the surrounding states.
I first got into PowerShell at SIU. My boss would often come up to me and ask me to create a script for something we would later use in production – he would only tell me what the end result should be – my job was to figure out how to do it. These scripts were mainly for Active Directory and migrating objects as we were in the middle of a large migration project. I was 18 at the time and had no idea what PowerShell was – so it was definitely a challenge. When I first started, I posted on Microsoft Forums a lot, asking for help and they would assist me with any issues I got stuck on. The project was a fantastic way to learn about PowerShell, as I had to start from scratch, which meant researching everything online, including finding scripts that I could break down and use.
During my time working in Office 365 administration, I found that the Office 365 Administration Portal was extremely slow, and it was also missing a lot of crucial functionality, which meant that you have to switch over to PowerShell. I have a terrible memory, so I found it annoying having to look up the same PowerShell commands over and over again. I realised that I could create a tool that could solve this gap in functionality, and would make a lot of common or repetitive Office 365 admin tasks much simpler. When I first started developing the O365 Administration Center, it started off as a menu in PowerShell that was called from a function. Here’s what the first function looked like:
You would choose an option (1-10), which were all common administrative functions (such as ‘Export list of Mailbox sizes’) and it would then run the PowerShell code necessary to do this. I also had functions to connect to all of our MSP clients’ Office 365 tenants.
After getting to this point, I wanted to keep building on it and make nested functions. My manager showed me some code to get this done, but it seemed a little complicated to me, so I decided to build a UI that would have the same functionality. My first attempt was a testbox and buttons. These included buttons to connect, buttons to run different items – basically tons of buttons! I still thought it could be better so I kept making changes: I added a menu, and then, as the first couple versions didn’t have any groupings, I re-worked a lot of it, and then grouped everything. This was very tedious, but worthwhile in the end.
Finally, and after about 2,000 lines of code, I re-worked the ps1 back-end of the tool, and organized everything to make it easier to find everything. The first proper version (2.0.0) was complete.
I released version 2.0.0 to Reddit and I got a huge number of people in /r/sysadmin, /r/powershell and /r/office365 providing opinions and suggestions on how to improve and build on the tool. One request I received was to show the admin what PowerShell code was running below so they can not only learn it, but also modify it if they needed to, or even put in their own code. At first this seemed like a huge task, and I honestly couldn’t think of a way to do it, so I dismissed it, thinking that it wouldn’t add much value to the center. I changed my mind after I saw a co-worker running the tool. I saw that he had to put his full trust in my scripts, and likewise for anyone who wanted to use it (unless they read the source code on GitHub).
I realised how important it was for Office 365 Admins to be able to see, or at least understand what’s going on in any tools they use. There are a lot of malicious scripts and programs out there, it was sensible for people to be wary of what they can’t see so I worked on showing the PowerShell code. As well as this, I also made some tweaks to the formatting, which meant it was much cleaner, and had new ways to organise the data (alphabetical tables of users as well as lists).
I started all of this in November last year, but it wasn’t something that I dedicated a lot of time to. It’s taken roughly 2 or 3 months of actual hard work to get the tool to where it is now. Honestly, I didn’t think I would ever show anyone outside my office and I definitely did not think it would become as popular as it has. I usually put aside a couple hours a week to dedicate to the tool, and make any refinements or developments.
The current version is 2.0.3. The tool makes it possible to manage hundreds of Office 365 tenants extremely quickly. At the moment, it’s possible to do over 200 tasks (I think – I’ve started to lose count). It helps Office 365 Admins speed up their day-to-day tasks and processes, but it’s also particularly useful if you work for an MSP, as you can connect to your partner account and connect to all your tenants all day.
Using the tool, Office 365 Administrators are able to carry out these common tasks (and much more):
- Get license lists, see who’s licensed, and who isn’t
- See shared mailboxes
- Create groups, view groups, add users to groups
- Get SharePoint URLs
- Generate reports
- See what devices a user is connected to with ActiveSync, disable ActiveSync.
I tried to add in anything and everything I could think of, but just in case I’ve missed anything, it also lets administrators pass their own commands. The admin can simply enter the command in the textbox and it will pass it through to the shell. They can connect to tenant accounts, export results to files and much more.
In terms of what’s next, Version 4 is in the works, and I have managed to get pushed updates working. You can connect to the Compliance Center, Exchange Online, SharePoint and Skype for Business. Each of these has their own tab, where you can run commands for that area. As well as this, I also got .net classes up and working, so when you save it will bring the .net class for printing or saving. There are a couple of example screenshots below, and I’m really excited about what this next version will be able to do.
Version 4 – with separate tabs for Compliance Center, Exchange Online, SharePoint, Skype for Business
Option to save
Option to print
The bigger goal is to make it possible for users to save encrypted credentials so you don’t have to log in all the time. I’m constantly looking up different items to add and I am always open to suggestions. My next big project is starting to make my Office 365 Administration Center work with on-premises exchange or make an equivalent tool just for on-premises exchange. I think this is going to be a really challenging project, but so far it all seems doable, so watch this space.
To get the tool, all you have to do is download it from GitHub. Before you do this, make sure you have read the pre-requisites (there aren’t that many), then it is as simple as just logging in. I haven’t heard much with regard to bugs in the tool so far, 99% of the time it’s someone running it without checking their configurations against the pre-requisites. If anyone has any problems I’m happy to help over email or even hangouts, and you can get in touch here.
If you’re an Office 365 Admin and you want to use the tool in your environment, make sure you download it from GitHub here
I hope you find it useful.
We at Cogmotive think that Bradley’s tool is a great addition to any Office 365 Admin’s toolkit. Bradley’s story is very similar to how we started our Office 365 reporting software, which is now part of a larger suite of solutions. We wish him lots of success and look forward to seeing what he creates in the future.