It's been a while, but I'm back. I decided to tackle this month's Scripting Games puzzle, and I found that it's basically something I've previously written with some modifications. So, I used that, made the necessary tweaks to fit their guidelines, and made some improvements over what I'd done at the time (it was a couple of years ago, and I'd like to think I've gotten at least a little better since then...)
Read MoreScripting Games: September 2015
For this month's Scripting Games, I get to trick the pipeline and play with text encoding! Fun stuff.
Read MoreScripting Games: July 2015
The Scripting Games puzzle for July 2015 is underway (almost over, actually); here's my solution.
Read MoreTest execution speed with Measure-Command
When hacking away at a shell or writing a quick on-off script that will only do a handful of things and only once, knowing how fast each part works isn't that big of a deal. When you're writing something that will get reused over and over, especially if it's something that's working against a large collection (such as, for example, running a WMI query against every computer in your domain), knowing how quickly different commands run could be quite important, especially if you're looking to improve execution speed.
To test execution speed, I use Measure-Command.
Read MoreBulk removing printers using WMI
The best way to do this is through Group Policy Preferences, but sometimes, we just need something quick and dirty. If you have Server 2012 or Windows 8 (or newer), you have access to such wonderful cmdlets as Get-Printer and Remove-Printer to help you out; most of us, however, still have to work with Windows 7 and Server 2008 R2 frequently. Fortunately, there's a way to do this using WMI, and I've written a quick snippet to show that off.
In my example, I needed to remove all of the printers on a server that came from one particular print server, and Group Policy wasn't really a good option at the moment. Note the 4 backslashes at the beginning and 2 at the end; this is because of how WQL queries work, meaning you have to do a double backslash for every backslash to escape them.
You can also use SystemName instead of Name in the filter; if you do, leave off the ending backslash (or just leave all backslashes off; it should work just fine that way).
Warning: this code could potentially cause unexpected and bad results if you aren't careful. I highly recommend testing before you use, and checking to make sure you've actually captured only the printers you want to remove by taking a look at what's in $printers before you run the last part (just do "$printers | select name" to see what printers you've targeted).