Category Archives: Extra PowerShell Contributors

Have you seen this!?

Help us Recognize Amazing PowerShell Contributors! has brought back their PowerShell recognition program of the past. This is a great opportunity to say thank you to people in the PowerShell community that may have helped you along your journey. Chances are, that we didn’t all get here entirely on our own. I sure didn’t.

If you’ve been here before and I’ve been able to help you, then let them know. Maybe I did it about you too, because yes, I’ve submitted one name thus far. 🙂 The reward is helping people — I get that, I have since mid 2014 and 200+ posts ago — but recognition across our community is rewarding as well. Let’s lift up and inspire those that contribute, as we help those that want to learn.

Stickers, What!?

When I started, I never considered that I would ever brand anything with my URL, and yet, as of this weekend I have. There’s a couple reasons as to why.

One, I’ll be in Phoenix in a couple weekends to give a session about my newest advanced function template (the 2.0 version). As a part of the session, I’m also producing a related blog post, so people at the session can refer to it in case they miss something during my session, or in case I run short on time. I couldn’t believe how fast an hour went when I spoke last year. Additionally, I’ll use my blog to make the advanced function template available — think, downloadable.

Two, it’s the PowerShell symbol and who, that’s willing to lose some time to PowerShell on a Saturday, wouldn’t want a sticker with that logo? So, for those that attend, I’ll see you there, and for those that don’t, let me see you here after 11 a.m. on Saturday, October 14, 2017 to check out the post.

AWS EC2 Instance CSV File: Let’s Have it, Amazon

Update: I’ve found something that AWS is already offering that may put this whole thing to bed. I’ll be back soon with more information!

I’ve wanted it for some time now… an always up-to-date CSV file that I can programmatically download — using PowerShell, duh — directly from AWS. But not just any CSV. I need a continually updated CSV that includes all the possible information on every AWS EC2 instance type. It can even include the previous generation instances, providing there’s a column that indicates whether it’s current or not. It would probably contain information I’ll never need, or want, and I’d still want the file, as I can easily filter against the contents of the document. I’d love to write the website post that shows how to do that, if we can get this file to fruition. So come on Amazon, make it happen. And then let me write about it on your blog! 😉

A few years ago I set out to write a PowerShell function that would extract the domain from an email address string — think com in — and check it against a list to determine whether or not it was a valid Top Level Domain (TLD). To do that, I needed an authoritative source, so I went to IANA, the Internet Assigned Numbers Authority.

Now, the only reason this PowerShell function was written, worked, and was distributed, was because IANA keeps an updated text file on their website of all the valid TLDs. My function would download the file, clean it up as needed, and then check my extracted TLD against the contents from the downloaded file. Oh, here’s that text file by the way: One of the neat features was that my function wouldn’t try and download the file, if the file had already been downloaded in the last 24 hours. Computers, man; they’re fun!

For nostalgia’s sake, here’s a few (slightly modified) lines from the function that downloads the file’s contents and cleans them up. They really work, so you can safely run these. No, this wasn’t a CSV file, as I’m hoping we’ll see from AWS, but instead a TXT file. The file had a couple lines I had to remove, as you can see from second to last line in the below code.

$FileLocation = "$env:USERPROFILE\tlds.txt"
$FileURL = ''
$TLDList = (Invoke-WebRequest -Uri $FileURL).Content
Set-Content -Path $FileLocation -Value $TLDList
$TLDList = Get-Content -Path $FileLocation | Where-Object {$_ -notlike '#*' -and $_ -notlike ''}

I’ve gone a bit off course in talking about this old project, but I think in doing so I’ve actually made my case better for why we need AWS to drop a CSV file of all the current and previous EC2 instances and their information. Give us the direct URL to said file and use one of your smart employees, or some automation, to regularly update this file, as it’s vital that AWS can guarantee the file is always accurate. Once that’s done, we can start to code around it. I already know I’d provide my team at work a function to grab the file and manipulate it as needed. That said, I wouldn’t be surprised if the team behind the AWSPowerShell module would do the same thing. What’s one more cmdlet at AWS, when there’s already well over 2,500?

I truly hope AWS is listening. I just know I can’t be the only one that would appreciate this information being delivered in this fashion, and directly from AWS.

Mike Robbins’ PowerShell 101

If you haven’t heard of Leanpub, then that’s about to happen. I only know so much about it, but I can already see the benefits to it. It allows authors to write, publish, and distribute eBooks as they’re being written, and of course at completion. The times are changing, as is technology, and so good authors can’t always be expected to print their books. Trust me, I’m currently reading an AWS book from 2015.

I briefly want to mention a project by Mike F Robbins on Leanpub entitled, PowerShell 101. If you’re not following him on Twitter, you ought to be. In January of this year (2017), he introduced his project to the community; he wanted to write and author an entry-level PowerShell book for anyone that wants to learn PowerShell. The neat thing here, is that he desired to share things he wish he would’ve been told, when he was just starting out. The book discusses the help system, objects, using the pipeline, and more topics you’d expect in a book of this type.

So, I sent Mike a message on Twitter. I told him I would be willing to read the book, as he was writing it, and try and help his publishing efforts by offering comments, critiques, and edits. I wasn’t implying he couldn’t do it alone, but did want to offer my writing and editing skills, and PowerShell knowledge toward his project.

Mike agreed, and so over the last several months, I’ve read chapter by chapter, as Mike’s been pumping them out. I’ve provided what I can to help his endeavor — not that he really needed me — but so he had another set of eyes. I feel it’s important that there’s been another person reading along, and thinking about his instruction, as a newcomer to PowerShell.

So with that, share the book as you can and as appropriate. PowerShell is fun. It’s even more fun, when you have those basics deep in your pocket, and so I’m glad to have been a part of this project. I truly hope this book can bring clarity to someone’s learning, as they move themselves into being a part of our PowerShell community.

If you didn’t catch the above link, here it is again: PowerShell 101.


PowerShell Saturday Returns to Phoenix

Phoenix PowerShell Saturday 2017

For the second year in a row, I’ve agreed to speak at the Phoenix PowerShell Saturday. Last year was a great opportunity for me in regard to both speaking — my first go at that, when combined with PowerShell — and learning. Thanks so much to Jason Helmick (who gave an amazing talk), and the others involved. Speaking is a small price to pay for a free, full day of PowerShell discussion and learning.

Based on the feedback from Thom Schumacher, both a speaker and event organizer, I get the feeling I did an adequate job. I may never really believe that, but I’ve agreed to head north again this October and talk about my favorite topic, with those that choose to attend. Yes, it’s PowerShell.

As of now, I’ve decided to share my newest I-wrote-it-mostly-at-home-kinda work project. What I’ve done is written a function template with built-in logging, and it’s much better than my 1.x versions (link). This could change, I suppose, but for now, I’m proud of what I’ve written and I’d like an opportunity to talk about and hand it off to the PowerShell community. The only thing I know thus far, is that’s it’s in Phoenix in October 2017. Watch the #PowerShell hashtag on Twitter for more information.

Phoenix PowerShell Saturday 2016

Here’s a few links from the 2016 event. The first below link is from one session where I discussed the fundamental three (cmdlets): Get-Help, Get-Command, and Get-Member. The second link is from a second session where I discussed how to get into writing reusable code. In this session, I additionally walked though various language constructs (If, If-Else, Do, and more). The final below link is a link to my speaker profile for 2016. I needed a place to put these links, and with the upcoming PowerShell Saturday for 2017, this seemed like as good place as any.

Post 200!

I’ve stopped all technical PowerShell babbling for a moment to point out the newest accomplishment. In less than three years’ time, I’ve written 200 published posts. That’s over six posts per month for a few months under three consecutive years. About PowerShell. Written by me. With the hopes to help people learn about PowerShell, or find a solution to a problem.

Back soon with something new. Enjoy the weekend.

Stop Looking Forward, My Thoughts

Don Jones, one of the bigger names in the PowerShell community, had an great post on his personal website. It was entitled, Stop Looking Forward. I liked it.

The idea behind his post was to stop looking to advance yourself and your career long enough, to give back to your community. Coming from Don, we can all safely assume, he’s speaking from experience. Whether he knows it, or not, he taught me for free, a time or two. It’s his job now, and so there needs to be dollar signs at some point in his help cycle, but I don’t think for a moment, that that’s what this was always about. It’s quite believable that he wants all of us to succeed. Writing is a talent, and so paying for his ability to explain these topic seems justifiable.

I remember right where I was standing when I decided I was going to give back to the PowerShell community, outside of just helping on various PowerShell forums, where I had been both learning and offering assistance, as I was able. No joke, but reading forums is a great place to learn. Before you know it, you’ll be able to help others learn those things you already have.

I was washing my hands in the bathroom sink at work, after I had recently read an article from a PowerShell MVP. He had a website,, where he occasionally shared PowerShell themed articles. That was it, I thought. I’m going to register, and I’m going to write about PowerShell, too. I always had this concern that I didn’t know enough yet, but I went ahead and I did it anyway. You can likely give back to the PowerShell community before you even think you’re ready. I started well before I thought I would.

I wrote my first few posts on, felt quite confident, and then read an article from Jeffery Hicks. In his post, he clearly stated not to do rewrites on the help files, as they were already there. Damn.

It was around June 2014, and I accepted that challenge. Unbeknown to Jeffery, as though it would’ve made a difference anyway, I never did a help rewrite again. Instead of doing help rewrites, I just started writing. I’d find something interesting and I’d share it. I make something I wanted to keep, and so I’d post it for others to read about and learn from. It’s been two and half years now and this is my 181st post. That’s an average of greater than 6 posts per month. There’s no ads, or sponsors, and I don’t see a dime. I was at 100 posts in April 2016 when I was chatting with Neema, a Microsoft employee, about their MVP program at the PowerShell + DevOps Global Summit 2016. I’ve written approximately 9 posts per month since then.

For those that haven’t asked, or have made an incorrect assumption, I’ve never been a Hero, or a Microsoft MVP. After the Phoenix PowerShell Saturday in October 2016 — where I actually spoke — I answered a question from Will Anderson: “No, I’m not an MVP.” I was impressed, however, as I had convinced an MVP, that I was also an MVP, even when I wasn’t.

I’ve said it a few times now: I set out to be an MVP. I set out to add my name to the list of PowerShell Heros. It’s about me in some way — I can agreed to that — but it all started with this desire to give back to others that were like me. I learned from the forums, so I helped on the forums; I learned from #PowerShell on Twitter, therefore, I contributed to Twitter; I learned from PowerShell blogs and started my own. A recognition would clearly indicate that setting out to help others, did in fact, help others. It would validate that I stopped looking forward, to help those around me. Those around me at work? Well, many of them get a weekly, PowerShell related email from, yours truly. I’ve written nearly 40 of them and plan to take it all the way to 52 — a full year of hey-learn-about-PowerShell-before-you-wish-you-did emails. If we want to promote from within, then let’s give those junior level, lower tier employees some skills; let’s get them interested in what we’ve found so fun. Let’s give back like Don has, like Jeffery has, like Will has, and June, too.

I’m going to quote Don, here — “At the end of the day, we should all measure our success by the impact we’ve made on our world, and in our communities.” I have no idea how long PowerShell will be around, or even how long I’ll be around, but I believe I’ve made an impact on my community. I’ve certainly set out to do that. As Don would, I urge you to do the same, if you don’t already.

Don says it better, so if you haven’t, go read that post already.

Be Twice the Employee

One of the things I like the most about PowerShell, is that it means I can work more than 40 hours per week. Now, what I don’t mean is that I work on PowerShell outside of the 40 hour week — although, I definitely do, because I’m hooked — but rather that PowerShell works for me, when I’m not even working.

For example, every day from 3:00 to roughly 3:45 a.m., it’s working for me. It’s doing what I told it to do; it’s executing; it’s taking a job I never wanted to do manually and seeing that it gets completed. Me? What am I doing during that time? Well, unless something’s gone seriously wrong, and I’m not just talking about work, then I’m asleep. I’m working and I’m sleeping, at. the same. time.

Ever expand the properties of an Active Directory group at 3 a.m.? If you did that in the GUI, then you were awake. Ever click that Members tab that early in the morning? If so, I bet you had wished you were sleeping. Ever remove a user from an AD group just hours before the sun was back up? I do it every day at 3:00 a.m., but I don’t.

This is one of the reasons that PowerShell is so powerful. It makes you more efficient. It makes you twice the employee. If there’s PowerShell for it, I can do it faster; I can do it more efficiently than the next person that doesn’t use PowerShell.

If you work, or want to work, in the Information Technology arena — both with Windows and now without Windows (yes, it’s likely come to your operating system of choice) — then make PowerShell a part of your skill set. Read Learn Windows PowerShell in a Month of Lunches, Third Edition; watch the Microsoft Virtual Academy PowerShell 3.0 Jump Start, and yes, I’m aware PowerShell 5.1 for Windows is coming this month. That set of videos is still worth the time.

Be twice the employee, too. Complete tasks no one would want to do, while you’re sleeping. I’m going to do it again tonight.

PowerShell Resolutions 2017

I’ve followed Boe Prox’s lead the last two years in making some PowerShell resolutions (2015 and 2016). Let’s start with how I did, and didn’t do, in 2016.

  • DSC genius: No…, I wouldn’t call myself a genius yet, as I still feel like I have plenty to learn. I look forward to getting my hands on the DSC Book being written by Don Jones and Melissa Januszko. Let’s hope work will cover the cost on that one.
  • Stay active on PowerShell forums: Yes. I’ve continue to assist on (not as much as the others…), Microsoft TechNet, Reddit, and even Facebook when there’s time.
  • Read PowerShell in Depth: In progress. This is on hold as I finish up a copy of Amazon Web Services in Action. My employer is getting deep in the world of AWS, and I opted to be the AWS lead for my team.
  • First module up on the PowerShell Gallery: Yes (and a script, too). I wrote a two function module that allows for foreground and background colors in the ConsoleHost without the need for Write-Host. The script, is a rewrite on a game I wrote a couple years ago called The 1 to 100 game. Check out the above links for more information.
  • Nano Server: I wouldn’t consider myself much of a resource, but I’ve done some experimentation. There’s more to do here.

There’s one thing in particular that I didn’t even think was possible this year. In April, I was asked to speak at the Phoenix PowerShell Saturday event. I didn’t see that one coming, but sure enough, I did that in October, and I think that deserves mentioning.

I’ve continued to stay active on Twitter, and in the close of the year, have had several popular posts there. I’m still actively blogging here on my site (-gt 170 posts now), and linking them on Twitter. I learned a good amount by reading PowerShell content linked on Twitter, and so I’m still giving back here, and then there.

Oh, I also started what I called PSMonday at work. Each Monday I send out a brief PowerShell related email to help encourage those around me at work to embrace PowerShell. I’ve written over 35 PSMondays, and each has been shared with those that read this site, in addition to those with whom I work.

So, what’s in store for 2017? I’ll get back on the DSC train, but before I do, it’s time to put Pester under my belt in completion. I’m looking forward to The Pester Book by Don Jones and Adam Bertram. I like the idea of a reasonably priced book that’s well explained, as Don leads the way. Congratulations to Adam, however, as a collaboration project with Don has got to be exciting and rewarding. Don’s ability to explain the concepts, is up there at the top of PowerShell author elite.

Not PowerShell related, but I did buy a Python book this evening. I’d like to gain some more experience with Python, as well. As I was spending some time with it several month ago, I shared some simple examples with my then 9-year-old son. He’s seemed to catch on. I’ll be letting him read the book if he’s interested, as the book is actually intended for kids. What can I say, I’m intrigued. So I don’t feel so ridiculous, I will include this quotes from the page linked above: “An excellent introduction to programming for anyone interested in learning to program, regardless of their age.” 😉

Make some resolutions, too. It’s paying off for me, and it can help keep you on track. I’m still working toward the Hero and Microsoft MVP awards, both of which will give my work for the PowerShell community some vindication. Not that I don’t already know, I’ve been a help for some.

Windows PowerShell, is PowerShell

In every post I’ve written here, I’ve always made a conscious effort to use the full term “Windows PowerShell,” before I use “PowerShell” later in the post. Well, those times have changed. With the recent news, dropped yesterday (August 18, 2016), PowerShell is open-source and cross-platform. Windows PowerShell is just PowerShell, and it’s available on Linux and Mac OS.

Here’s one of several stories on yesterday’s news: And here, is the story that mentions the name change:

I’ve always been pleased by my site’s tagline: “A Windows PowerShell Resource.” Today, I’ve gone ahead and made the change, too, signifying that I’m ready, as well. There’s isn’t a non-Windows post here, but in time, there may be.

Yesterday, and today.



It’s a new era, now. Everything I’ve read, from people I trust in the PowerShell community, says the same thing. The investment we’ve made in PowerShell will be transferable to these other operating systems. We’re better off, than we were just a day ago.