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 More
For this month's Scripting Games, I get to trick the pipeline and play with text encoding! Fun stuff.Read More
The Scripting Games puzzle for July 2015 is underway (almost over, actually); here's my solution.Read More
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 More
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).