PowerShell

PowerShell modules I worked on in 2018

We're a few days in 2019, and from a time perspective, I can say I had a busy 2018. I must say I've never expected that but in 2018 I've created or worked on 24 PowerShell modules. Some were simpler ones, some were a bit more advanced, and some will be retired in 2019 because their features will be moved to other modules. In PowerShellGallery alone those were downloaded over 15000 times (I must admit that some of those are surely automated tests – “Hello Pester” that I've learned in 2018. It's a nice number thou, and something I'm kind of proud of myself. After all, before 2018 I've not created a single PowerShell module before. Sure, I've created a bunch of scripts, hardcoded, that did the task that I had to solve. But I've never before built something, that could be installed by one little command Install-Module (something I've learned in 2018 as well) and executed by anyone, anywhere. I know the title says Sixteen PowerShell Modules but some modules are just too simple to give them anything else than a small mention.

PowerShell Modules

If you follow my little company or me on Twitter or Facebook or GitHub you already know some of them, but not all of them get the same treatment. Not all of them are announced or even prime time ready, and some are in constant development which may be bad for some people because I like to change my mind on how things are supposed to look or work and that means breaking changes most of the time. What works today, tomorrow may not suit my needs that much so I change it. I try to be careful,  I try to support old configuration, but it's not always possible or even feasible in the long run. But the main reason for the change is that I'm continually learning new things so what seemed like a good idea in January, in June looks like I should have spent more time on design.

PSWriteWord – module to create Microsoft Word documents without Word being installed. It's actually not my first rodeo with Word because I was responsible for DocX project written in C# that I've helped to develop and maintained before Xceed took it over. This module simply uses it's DLL so it's strictly connected with it.

PSWriteExcel – module to create Microsoft Excel worksheets without Microsoft Excel being installed. I needed an excel export, and initially, I've used great ImportExcel module by Doug Finke, but it was missing some of the datatypes I've used. I've even created a PR and submitted it to ImportExcel project, but it was denied (I don't blame him, I have particular code habits, and clearly lots to learn) I had only two choices – change my datatypes or create a new module that allows me to have greater control over the development of it. It's not supposed to be a competition to ImportExcel at all, but it has its place.

PSWriteColor – this module was actually created as a single function a few years back. I used to copy it over and over in my scripts till I've learned in 2018 that I can just type Install-Module PSWriteColor and I can have it up and ready. I use this module daily. It allows me to use colors in PowerShell console in an easy and intuitive way. And that's just one of many features it has. New lines, tabs, logging to file, it's all there. Simply type Write-Color ‘My text', ‘ which ‘, ‘ will be colorful' -Color Red, White, Yellow and you're done.

PSTeams – This little module is cross-platform module allowing to send messages to Microsoft Teams channel from Windows, MacOS or Linux.

PSDiscord – This little module is cross-platform module allowing to send messages to Discrd channel from Windows, MacOS or Linux.

PSEventViewer – This little module parses Windows Event Logs providing functionality that is not easily available when using standard Get-WinEvent cmdlet. It basically scans XML that are attached to each Event and delivers output. In new version that I've to yet describe I've added some nice functionality. One of the features is the ability to ask for specific RecordID.

PSWinReporting – is a PowerShell module that scans Domain Controller Security Events providing reports about who, when and what changed in Active Directory. It delivers reports to email, Microsoft Teams, Slack and MS SQL. Soon to Discord and there are heavy works in progress to deliver nice console functionality that simplifies searching events with no effort at all.

PSWinDocumentation – is a module that automates creating infrastructure documentation straight to Word, Excel and MS SQL. Currently supports generating documentation for Active Directory and in smaller portions for AWS and Office 365.

PSAutomator – this little module is a new approach for onboarding, offboarding and BAU processes. It's still in Proof of Concept phase but my plan for 2019 is to get it to a stable level and replace with it all scripts that I've hardcoded for my Clients.

PSPasswordExpiryNotifications – is my go-to module for Password Expiry Notifications sent to EMAIL based on Active Directory data. It doesn't require any HTML knowledge. It has simple to use configuration file, ability to deliver notifications to users, their managers and administrators on defined timeframes.

PSBlackListChecker – This module allows you to monitor for IP reputation. If you run Exchange server or any mail server for that matter, you may want to check this out. It can check DNSBL Blacklists in PowerShell Console, send notifications to email, Microsoft Teams, Slack and Discord. It uses run spaces, and it was an excellent learning exercise for me.

PesterInfrastructureTests – This little module is a fork of Bill Kindle module. It allows you to test your Active Directory Forest with Pester and see if everything is working correctly. It tests AD, site replication, open ports and so on.

PSSharedGoods – this module is a very specific module. You know how a module is supposed to focus on one area and make the best of it. This module focuses on all areas at the same time. It's my All-In-One module that is supposed to be the glue between most if not all of my modules. I've noticed with each new module that I tend to use the same commands over and over again. And any improvement I made in one module I had to copy to other modules. So instead of having 5 copies of the same function which at some point were starting to get out of sync, I decided to have one common module that holds all the little functions.
PSOutlookProfile – This PowerShell module solves a problem of many migrations where 2 Microsoft Exchange accounts are added to Outlook and you need to remove the first one. It does some registry magic and was a good exercise for me.
PSPulsewayManager – is a module that allows controlling Pulseway Manager in Active Directory environment. Pulseway is great software that allows getting notifications about your infrastructure to your Smartphone. It also allows you to control your infrastructure from a smartphone. It was nice enough to let me snowboard and while being on a lift reboot servers on demand. This module allows you to configure some stuff on a global scale.

PSWriteHTML – this module is a fork of ReportHTML at least partially. And it's something I plan to work on in 2019. It's not prime time ready, but I can assure you that in 2019 I've big plans for it. Unfortunately besides deciding on how I would like my module to look like I've to also learn and play with HTML, JavaScript, and CSS. Something that is a bit out of my comfort zone, but I made some progress on it.
Blog stats and Thank You!

Since this is a summary of my year, I've decided to share a bit of stats with you. I was pleased to see that year to year my blog was able to get 69% more visits. Something I'm proud of it. It's funny thou because it seems like on Saturdays and Sundays there is very rarely any traffic. Like if people stop searching for technical solutions, PowerShell modules and all that. Contrary to myself, where I spend weekends doing just that.

Finally, I would like to say BIG THANK YOU to people that helped me with some PowerShell problems in my journey thru 2018. I've learned a lot from you. Last but not least I would like to thank everyone involved in building VSCode and VSCode PowerShell Extension (and it's additional supporting modules). Working in VSCode has really impacted my PowerShell skills and allowed me to improve my skill set overall.

This post was last modified on January 5, 2020 11:31

Przemyslaw Klys

System Architect with over 14 years of experience in the IT field. Skilled, among others, in Active Directory, Microsoft Exchange and Office 365. Profoundly interested in PowerShell. Software geek.

Share
Published by
Przemyslaw Klys

Recent Posts

Upgrade Azure Active Directory Connect fails with unexpected error

Today, I made the decision to upgrade my test environment and update the version of…

6 days ago

Mastering Active Directory Hygiene: Automating Stale Computer Cleanup with CleanupMonster

Have you ever looked at your Active Directory and wondered, "Why do I still have…

4 months ago

Active Directory Replication Summary to your Email or Microsoft Teams

Active Directory replication is a critical process that ensures the consistent and up-to-date state of…

8 months ago

Syncing Global Address List (GAL) to personal contacts and between Office 365 tenants with PowerShell

Hey there! Today, I wanted to introduce you to one of the small but excellent…

1 year ago

Active Directory Health Check using Microsoft Entra Connect Health Service

Active Directory (AD) is crucial in managing identities and resources within an organization. Ensuring its…

1 year ago

Seamless HTML Report Creation: Harness the Power of Markdown with PSWriteHTML PowerShell Module

In today's digital age, the ability to create compelling and informative HTML reports and documents…

1 year ago