New Module: PSSplunkSearch
As often happens when I’m doing my day to day job, I’m asked to start watching something. I go to the website of our app (in this case Splunk), type in the query and do the search. Have to do this 4 or 5 times throughout the day. I don’t know about you, but I find this really annoying. I’m not entirely sure why, but just typing something at the command line is just so much easier for me, better yet just writing a quick script with all my parameters in it and running it for a quick look. And hence, PSSplunkSearch is born–because spending 4-5 days writing a new module to complete a task I only had to do for one day is totally efficient, right?
Continue readingNew Module: SimpleADAdmin
Another day another module. Using PowerShell Gallery to publish modules and make them available to all is really a game changer. I’ve been finding myself repackaging old scripts into modules and publishing them (see PSHTMLTools) and SimpleADAdmin is no exception. It’s basically Get-SAUser but now in a module.
Checkout out the blog post about it, and you can read the documentation on Github. Installation is easy:
Install-Module SimpleADAdmin
In the future, I want to add Get-SAGroup to the module to allow you to manipulate and locate groups much easier. Enjoy!
New Module Published: PSHTMLTools
Before I get started, just wanted to check with you that you’re ok? It’s been a long time since I posted here and it probably came as a shock. Work at athenahealth has been incredibly challenging and to be honest, when I get home I just want to spend time with my family and not hours MORE behind the keyboard coding! I’ve also taken up hiking–when my back allows–and am the proud owner of a blue Tesla Model 3! And, in a stunning turn of events, my daughter has become a teenager. I have no idea how that happened. That said, I got the bug this weekend after a Github contributor put in a Pull Request to my old Set-CellColor function. I wish I could have accepted the PR, but I ended up reworking the script to squash a long standing bug. Then I added CI/CD and Pester testing. Ah, screw it, let’s make a module!!
Introducing PSHTMLTools
This is a module of the 3 HTML tools I use–almost exclusively–for my reporting at work. They are designed to work with ConvertTo-HTML, and while they might work with HTML tables created from another source, it’s not their purpose. The 3 functions, you ask?
- Set-AlternatingRow
- This is a simple function that will alternate between two CSS classes for each row of a table. You supply the CSS and the classes and just tell the function what they are.
- Set-CellColor
- This function will take a Filter that you supply (Column4 -eq 5) and if it finds a cell in that column that matches your criteria will change its color to what you tell it to. This is great for reports where you want to highlight when some threshold is crossed, like 90% license usage.
- Set-GroupRowColorsByColumn
- This will change the color of a row whenever the value of a column changes value. Say you have a report that has 2 or 3 lines for each server, you’d group by the server name and get a different color every time the report moves on to a new server. This one makes for especially slick looking reports.
That’s it. I enjoyed making a full CI/CD pipeline for this module with a full suite of Pester tests and automatic publishing to PSGallery. To install it you can simply install it from the PowerShell Gallery:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Install-Module PSHTMLTools |
Interested in contributing? You can find the project on Github here.
Active Directory Operational Testing
One of the things I’ve been working on lately is some kind of operational testing for Active Directory. It’s such a reliable product that as Administrators we tend to neglect it. Then Irwin Strachan came up with his Active Directory tests using Pester, and this was the first time I’d seen Pester used in something other than code testing and it really got the mind turning. So when we started getting really serious about monthly capacity planning at athena health then I wanted to do this kind of testing for our Active Directory.
Calculating the Quarter
Quick post since it’s been awhile since I’ve done anything. I’ve mentioned before but I do a lot of reports, and I recently got one to do some calculations for 95th percentile–well, kind of. The funny thing was the person who asked me was supposed to be making a solution themselves, kind of homework from the boss but they didn’t mention it to me and I thought it would be a fun challenge so I went and wrote up a script that could do it, parameters and everything. Oops! Anyway, when done they loved the report so I streamlined it from taking 10 minutes to run to about 1 or 2 (all in SQL, no PowerShell) and thought I was done with it. Then came the ask, not only do they want that data for the month, they want it for the whole quarter! So now I had to figure out which quarter I was in and what the date range for that would be. Yeah, I could put it in by hand, but there’s no challenge in that.
First came a Google to see if someone could do it in a one liner, and sure enough Vinoth over at StackOverflow had some great maths for that. Now calculate the dates and the easiest way was to simply create a little loop 1 through 4 and calculate my dates:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Define Quarters | |
$Quarters = @{} | |
$Start = Get-Date –Month 1 –Date 1 –Year (Get-Date).Year | |
ForEach ($Q in (1..4)) | |
{ | |
$Quarters.Add($Q,[PSCustomObject]@{ | |
From = $Start | |
To = $Start.AddMonths(3).AddTicks(-1) | |
}) | |
$Start = $Start.AddMonths(3) | |
} | |
#Define this quarter | |
$Quarter = [int]([math]::Ceiling((Get-Date –Format MM)/3)) |
First use Get-Date to get the January 1st, then loop 4 times adding 3 months each time to get the date ranges. Now to get a date range for the current quarter? $Quarters[$Quarter].
Simple Day to Day Administration
Been so long since my last update! Why haven’t I posted more? Well, for one I’m usually so tired from coming home from work I just don’t have any extra energy for PowerShelling. Another factor has been there are so many people doing so many interesting things I just couldn’t find anything that someone else wasn’t already doing much better than I am. The last bit is having an interesting project to talk about. I’ve been doing a lot of things at work, but it had to do with Windows cluster node moves, SQL Availability Group moves and so on. But ultimately the scripts become pretty specific to athena so it’s difficult to translate for general use.
I think I finally have something interesting, though, with Get-SAUser so read on!
PSNetScaler Module
I’ve been working a lot lately on our load balancer, a Citrix NetScaler 7500 to be specific. Since we upgraded the to version 10.5 (and got rid of that crappy Java interface) the web experience is actually pretty pleasant and I do most of my work there. If I have a lot of changes I occasionally drop into the CLI, but mostly I’m on the web interface. That said, I love me some PowerShell and I thought wouldn’t it be amazing to have some PowerShell cmdlets? Read on to see how the PSNetScaler module was born.
A Practical Guide to GitHub for the PowerShell Scripter
When I first started dipping my fingers into the GitHub pool, it was because I really felt there was a need. Version control was becoming an issue and having to re-write code I’d already perfected because of a glitch somewhere on the way–translation: accidentally deleting the wrong file–was something that just had to be addressed. And, I think like a lot of PowerShell scripters, I soon started asking questions like: WTF is this? What is going on? Who came up with this crap? I’m no expert, but read on if you’re interested in learning how to use PowerShell and GitHub together.
Announcing the PS.SQL Module
I’ve been doing a ton of work with SQL and PowerShell over the last year and a half and have come up with some pretty good tools to help me along the way. We even built a module out of them at work and use it in a dozen or more scripts every day, when it finally occurred to me that my readers might like to use them too. And the PS.SQL Module was born.
Count Unique OS’s Per vCenter
Saw a fun little challenge from The Ginger Ninja, here. The idea was to use PowerCLI and find out how many unique OS’s you have on your Virtual Center server. Of course, this requires you have a VMware environment, so for the rest of you–sorry!