Category Archives: Extra

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.

Extra – Two Year Anniversary

Just a quick post to mention that has been up for two years this month. That’s June 2014 through 2016.

I remember early 2014 and thinking about buying the domain name, about the prospect of writing assistive PowerShell content, and about working to associate my name with Windows PowerShell. Two years later, and it’s been somewhat of a success — I didn’t know if I could do it, but I have. It’s almost difficult to believe, but I’ve been told that my efforts have helped people improve their knowledge of PowerShell, and even assisted in their careers. To help, was always the original idea. To learn it deeper, myself, was a welcomed benefit.

There’s no stopping here. This post is a just a brief intermission until the next topic.

Update: As of yesterday (June 7, 2016), I’ve renewed the domain for another two years. 🙂

Extra – Windows PowerShell Constrained Endpoints, Proxy Functions, and Just Enough Administration

I had a recent request for some information in regard to constrained endpoints. There was a lengthy article posted in a TechLetter earlier this year that I authored (it actually won me a free 4-day pass to the PowerShell + DevOps Global Summit 2016). As of now, those don’t appear to be back online, since the recent redesign and changes over there.

Therefore, I’ve opted to post the paper here. Keep in mind, as you read this, that we should be moving away from constrained endpoints of the past and toward JEA endpoints of the future. Realistically though, I’m pretty sure those constrained endpoint cmdlets of the past, are the ones of the future, with some new additions… I should probably go get my hands dirty. Enjoy!

Note: Throughout the course of this previously written paper, I used the term proxy function rather loosely. I’ve done some thinking since then, and no longer use it that way. Going forward, or if I were to rewrite this paper, I wouldn’t use the term proxy function. Instead, I would refer to the included functions as wrapper functions, as they wrap other commands, and didn’t have anything to do with obtaining the cmdlet metadata and using that to write a function. If they had, then they’d be a proxy function.

Windows PowerShell Constrained Endpoints, Proxy Functions, and Just Enough Administration (241 downloads)

Extra – The 100th Post

In less than two years time, I’ve written and published 99 posts:


On this note, welcome to post 100! This is a exciting achievement, especially since I didn’t even like PowerShell much when it was first introduced (as Monad). I really preferred VBS then, and I didn’t even care much that we — Microsoft admins — were getting a shell, too. It didn’t all register then, and realistically, it was probably because I was still somewhat early on in my career.

It feels like I just bought the domain name and made the commitment to associate myself with Windows PowerShell. Post 100 is a post I didn’t even know was a possibility. In fact, the number of posts were never a consideration. It’s always been about quality, even in brief, right-to-the-point posts. I’ve tried to elevate this blog, by using simple and clear examples to help teach some of the basic and intermediate concepts. I intentionally add clues and use full descriptions to encourage and assist my readers.

In celebration of post 100, I’ll list my top 10 favorite posts, in no particular order:

1. Quick Learn – Clear-Host, Without Clearing the Host

2. Quick Learn – Using OutVariable — Why Don’t I Do that More Often?

3. Script Sharing – Return File Sizes in Bytes, KBs, MBs, and GBs, at the Same Time

4. Script Sharing – Two Old HTAs: LoggedOnUser and Remote Desktop Assistant

5. Quick Learn – Run Background Commands after Every Command (Part II)

6. Quick Learn – Determine if the Alias, or Function Name was Used

7. Quick Learn – Proving PowerShell’s Usefulness to Newbies, Part III

8. Quick Learn – Give a Parameter a Default Value

9. Quick Learn – Save External Dynamic IP to Dropbox

10. Extra – Why is there a

Extra – How Do I Start to Learn PowerShell?

I’ve been around the Windows PowerShell community awhile, and its various forums, and have noticed a consistent theme: People often ask how and what to use to learn PowerShell. There’s plenty of articles and other content out there — ten years’ worth now — and people still ask. While I began this site to help teach PowerShell, depending on the day, it may not always the best place to start. So, what is?

There’s two things I’ve often recommended to help people learn PowerShell. One is what I would consider to be the de facto standard of all introductory PowerShell reading, Learn Windows PowerShell in a Month of Lunches, Second Edition written by Don Jones and Jeffery Hicks and published by Manning Publications.

I read this book after I had already spent a couple years learning PowerShell. While I appreciated seeing what I missed in my own education, I realized with every page turn that I could’ve learned everything I knew, in a lot less time. All I would’ve had to do was buy the book first, and make a commitment to read it. If you’re new to PowerShell and you suspect that you’re going to be a Windows system administrator in the future, then buy it and read it now, before you end up hating yourself for not doing it sooner. Let me know if I get the cue to tell you, “I told you so,” or not. I hope I don’t.

The other thing I’d recommend are two video series found on Microsoft Virtual Academy. This really helped solidified some concepts. The first one is called Getting Started with PowerShell 3.0 Jump Start. The second series, to be watched after the first, is called Advanced Tools & Scripting with PowerShell. 3.0 Jump Start. While these both focus on PowerShell 3.0, they are both still quite relevant to the current release (PowerShell 5.0, at the time of this writing). I’m not sure which I’d recommend you do first — the book or the videos — as I’m not sure if one sequence would be better than the other. Either way, do both as they ensure a good amount of beneficial exposure.

There you go. These are my two, top recommendations for learning Windows PowerShell. It should be said, that in addition to these two, one of the things I did (and I’ve said it several times now), is ensured I learned at least one new thing about PowerShell every day (no matter how big or small, or what day it was). PowerShell is an important part of the future as a Windows system administrator, whether or not, you believe that right now.