Powershell health check script



I've been writing PowerShell scripts since 2015. One of the first scripts I wrote was a health check script my home computers. When I first wrote it a few years back, it's main purpose was to identify those computers that hadn't been rebooted in a long while

As time has gone on, I've added a lot of extra code to the health check script to cover new needs , I've removed some older functions. It's main function is a topgraphic review of my stuff that I can read on my home pc, or my phone via an HTML formatted email. 

This blog post will describe the script and it's functions

The script is on GIT hub <here>, and you can easily re-purpose it by editing the XML to suit your environment. I run it as a windows scheduled task on a computer that has vmware PowerCLI installed. 

The script dynamically collects computer asset info from active directory, I've got filters to stop it running scans against certain computers, these computers are filtered out in the related settings.xml under the <filter> section </filter>

Once the list of AD computers is created, the vmWARE PowerCLI module is loaded to allow for various metrics to be pulled from my home lab vCenter

I love talking about my HomeLab, if you're interested, you can read about it on my first ever MyCugc.org post here


Let's look at the output of the script and go over how each section, and why I have each:

Part 1 is mass scan against all domain joined assets. I've added/removed columns over the years, the ones I have right now I've found the most useful.

Ping, Uptime and most recent windows OS patch / hotfix are the most important items for me


Part 2 relates to my file server. I use DFS to manage failovers between my primary / secondary windows file servers, and have had a few times where I've disconnected the USB cable to my external HDD that's on the secondary file server, so want to know if the related backup task completed successfully 


Part 3 is broken down into 4 sub-sections: A/B/C/D. To be honest, I could probably combine this with part 1, but it would be a lot more scrolling to-the-right. They have been added as time has gone on, and i've found it easier to maintain code / html output-wise if they are in different sections

Part 3 A is an over-view of VMShell info from vCenter (names/hosts) are withheld 




Part 3 B: Is pure vmware datastore related. Good to know when space is getting low, yo!



Part 3 C: Is DRS related. I enabled fully-automated DRS on my new vSan cluster last year, and wanted to know what was happening while I was sleeping. I could probably turn it off , but I do like knowing that it's working :-)

Part 3 D: Is an over-view for all vCenter connected hosts. I did have a situation last year, where I ended up with a slightly different ESXi build (down to the last few digits) on a few of my hosts. The report caught the mistake, and I level-set the builds the next day


I've not described the specific code. however, if you're interested in learning PowerShell, drop me a comment and I'll point you in the right direction!

Thanks for reading and have a good day/night!

Owen


Comments