Creating QR Codes in PowerShell

I wrote a module as a wrapper around the .Net port of Google’s ZXing library to allow me to create QR codes in PowerShell. It hasn’t been used a ton, but I figured it was finally time for me to share it with the rest of the world so I published it out on my GitHub.


Hacking ValidateSet

I guess I should start off this post by saying what I’m doing is a dirty hack, in no way supported, and in general a terrible idea. But it’s also really awesome.


SharePoint 2007 Wiki Pages Broken

One of our SharePoint wiki libraries got in a state where we couldn’t edit any of the pages. When we clicked “Edit” we would get the document properties page instead of the wiki editor page. I believe the root cause was someone moving a page from another wiki and the page ended up in the library as a “document” instead of a “wiki page”.


Deploying WDS Across Domain Forests

I’m not going to cover how to setup your unattend file, or how to customize a PE image… there are plenty of people out there who have covered those topics. What I do want to cover here is how to edit your PE image so that you can force it to connect to a specific WDS server. This will help solve the problem where you want to deploy computers into two domains on the same subnet, but WDS only looks for prestaged computers objects on the domain it is joined to.


Re: Zero Out Free Disk Space

We’ve been having weekly script club meetings at work where anyone who is interested gets together in a conference room and we all work on scripts together so we all have a chance to learn new techniques while solving our real-world problems at the same time. This week I developed a script to mimic the behavior of the SysInternals utility SDelete. The script will be used to reclaim thin-provisioned space from our SAN, and I wanted to develop it during script club to use as an example of how to use the classes in the System.IO namespace to get better IO performance from PowerShell.


A PowerShell Alternative to SDelete
Many storage appliances support thin provisioning by not storing large blocks of zeros on disk, thus saving expensive physical disks for actual data. One of the challenges of this feature is that Windows (or most file systems really) does not zero out space that was used by files that have been deleted. This means that over time as files are written an deleted, the amount of physical disk that is saved by thin provisioning grows smaller.

Powershell ValidateNotNullOrEmpty Bug

I was showing a co-worker how easy it is to ensure that the parameters to his script were actually being set using the [Parameter(Mandatory=$true)] and [ValidateNotNullOrEmpty()] decorators on his parameter declaration block, and we encountered a bug where he was able to pass an empty string as a parameter to his function and the validation did not catch it.