Using Pester and the Operation Validation Framework to Verify a System is Working

If you haven't seen the Operation Validation Framework on GitHub, it's definitely something worth taking a look at. This framework allows you to write Pester tests to perform end-to-end validation that a system is operating properly. Pester is typically used to perform test driven development or unit testing on your PowerShell code, but in this scenario it's used for operational testing. You need to have Pester installed, but if you're running Windows 10 then you already have Pester. Download Read more [...]

Solving DSC Problems on Windows 10 & Writing PowerShell Code that writes PowerShell Code for you

I recently ran into a problem with DSC on Windows 10 when trying to create MOF files with DSC configurations that work on other operating systems. An error is generated when the friendly name for a DSC resource contains a dash and that friendly name is specified as a dependency for another resource. I know that only certain characters are allowed in the name that's specified for DependsOn and I've run into similar problems with things such as IP addresses due to the dot or period, but the dash works Read more [...]

Video & Presentation Materials: October Omaha PowerShell User Group Meeting

This past Tuesday, I presented a session on "Using PowerShell Desired State Configuration in your On-Premises Datacenter" for the Omaha PowerShell User Group. During that presentation I demonstrated a number of the tips and tricks that I've learned while implementing systems in multiple data-centers using DSC. The meeting was recorded and the video from it is now available:   You can download a PDF copy of the slide deck along with both of the scripts used during the presentation Read more [...]

Using Pester to Test PowerShell Code with Other Cultures

I recently published a blog article on unexpected case sensitivity in PowerShell. An example in that blog article uses the contains method which is indeed case sensitive. One of the workarounds that I demonstrated was to convert whatever the user entered to upper case using the ToUpper() method. One of the reasons I like blogging is that many times there are things that I may not have considered and sometimes things that I wasn't even aware of so in addition to sharing my knowledge with others, Read more [...]

Some Cases of Unexpected Case Sensitivity in PowerShell

I'm sure that you've all heard that PowerShell is case insensitive, right? Most things in PowerShell are indeed case insensitive and what is case sensitive is normally expected behavior, but I've come across a number of things in PowerShell that are case sensitive that don't work as I would expect them to which are listed in this blog article. One of the first things that I discovered in PowerShell that is case sensitive that you wouldn't have thought would be is the Region keyword that was introduced Read more [...]

Announcing the Winner of the PowerShell TFM Book Contest

Two weeks ago, I started a PowerShell contest which required the participants to convert a string of text to title case. I didn't specifically say title case but I explained that the first letter of each word should be converted to upper case and all remaining letters in each word should be converted to lower case. This was because a search on how to convert to title case with PowerShell gave away a good portion of the answer. There were a total of 22 entries in the contest and all of them were Read more [...]

Code and Slides from my sessions at SQL Saturday 439

Today I presented two wildly successful sessions at SQL Saturday #439 in Columbus, GA. The code and slides from my "How do I Get-Started with PowerShell?" session can be downloaded here and the code and slides from my "PS C:\> Get-Started -With PowerShell Desired State Configuration" session can be downloaded here. The custom functions that are referenced in the code from the DSC session can be downloaded as part of my MrDSC module from GitHub. µ Read more [...]

PowerShell: Filter by User when Querying the Security Event Log with Get-WinEvent and the FilterHashTable Parameter

I recently ran across something interesting that I thought I would share. The help for the FilterHashTable parameter of Get-WinEvent says that you can filter by UserID using an Active Directory user account's SID or domain account name: Notice that the help also says the data key can be used for unnamed fields in classic event logs. I often hear the question wanting to know what the valid key pairs are for the hash table. As you can see, they're listed in the Read more [...]

Windows PowerShell TFM Book Contest and Giveaway

Today is the first day of Autumn also known as fall here in North America and it's my favorite time of the year. If nothing else, you've got to love the cooler weather and the changing of tree leaf colors. Last fall, a new version of the Windows PowerShell TFM book that I co-authored along with Jason Helmick was published and strangely enough, its design is remarkably similar to the colors that are associated with Autumn. SAPIEN Technologies who is the publisher of the book is providing one Read more [...]

Working around UAC (User Access Control) without running PowerShell elevated

We've all heard it and experienced the problem where you can't perform tasks such as stopping a service on the local machine with PowerShell unless your running PowerShell elevated. If the title bar doesn't say "Administrator" then you'll end up with these types of error messages: If PowerShell remoting is enabled on the local machine, you can simply remote back into it to perform the task without having to run PowerShell elevated: This Read more [...]

Video & Presentation Materials: September 2015 PowerShell.org Advanced Functions TechSession Webinar

Last week I presented a session titled "The Top 10 Considerations When Writing PowerShell Advanced Functions" for the September 2015 PowerShell.org TechSession Webinar. The video from that presentation is now available: The presentation materials including the code and slides can be downloaded from here. I received a question during the presentation about how to determine what the type accelerators are and the answer to that question can be found in this Hey, Scripting Guy! Blog article Read more [...]

#PowerShell: DelayedAutoStart Property added to the Win32_Service WMI Class in Windows 10 RTM

I recently discovered that Windows 10 adds a DelayedAutoStart property to the Win32_Service WMI Class: I've verified that this property does not exist on prior operating systems such as Windows 8.1 even when they're updated to the production preview version of PowerShell version 5. I had written a Hey, Scripting Guy! Blog article on how to query the registry of remote machines to "Exclude Delayed Start Services when Checking Status with PowerShell" that shows Read more [...]

#PowerShell: Splatting a Local Hash Table in a Remote Session

I'm sure that most people who use PowerShell on a regular basis are familiar with the "Using" variable scope modifier which allows for the use of local variables in a remote session. This functionality was introduced with PowerShell version 3: A fairly simple concept, right? But wait a minute, did you know that you can also define a local hash table to be used with splatting in a remote session using this same concept? The Read more [...]

My Solution: August 2015 PowerShell Scripting Games Puzzle

A couple of months ago, PowerShell.org announced that the PowerShell Scripting Games had been re-imagined as a monthly puzzle. In August, the second puzzle was published. The instructions stated that a one-liner could be used if you were using a newer version of PowerShell. A public JSON endpoint can be found at http://www.telize.com/geoip and your goal is to write some PowerShell code to display output similar to the following: Try to accomplish this with a Read more [...]

Video from Atlanta TechStravaganza 2015: Using PowerShell Desired State Configuration in your On-Premises Datacenter

This past Friday, I presented a session titled "Using PowerShell Desired State Configuration in your On-Premises Datacenter" at Atlanta TechStravaganza 2015. Fellow PowerShell MVP Stephen Owen took this photo as I was preparing for my session: Another fellow PowerShell MVP, Jonathan Walz of the PowerScripting Podcast, recorded all of the sessions in the PowerShell track which can be found on their YouTube channel. Several presentations are included in each of the videos and mine is Read more [...]