This is a problem that has been annoying me for some time now - finally wanted to write about it. Feel free to slap me on the wrist if this has already been discussed in another question on Superuser.
Right now, I do most of my software development on some flavor of Windows (XP, Win7, Win8). Typically, I end up setting up a new development workstation for myself every 6-9 months, be it on a new laptop or desktop, at work or home (or because of a hardware fatality). As you might expect, there's usually lots of stuff to install manually, from IDE's to office productivity tools. Very time consuming, tedious, and somewhat inconsistent definitely violates the DRY principle in my mind. I would also prefer to stay away from virtual machine environments for this question.
I'm looking for suggestions on how to automate this. Some requirements: -Assume I already have an install of Windows 7 with all of it's patches and vaccinations. Also assume that I cannot just clone an image of the hard drive. -I want to be able to use a script file of some kind to control what is installed. -The script file itself should just be a text file (or series of text files), something that can be easily checked into version control -The installation script should be smart enough to know where to download an installer for a given application (some sort of network address/URI), I'd be okay pointing to where these lived. -Installing the script engine/executable on the workstation itself is not a problem. -Executing the installation script can happen on the command line. -The only thing I'm really trying to avoid is having to setup a lot of additional infrastructure to support this (setting up a network drive is okay, setting up a couple of additional servers isn't). -Ideally, this solution would be relatively portable, something that I could use at home or work. -The solution should be inexpensive (< $100), if not free altogether, aside from my time to write the scripts, etc.
Something naively, this feels like something akin to build/project scripts (Make, Ant, Maven, etc.) crossed with shell scripts. Would PowerShell be suitable for such a task? My first thought was to use Puppet/Chef, but I'm not sure how well suited those are for a Windows environment?
Just looking for thoughts, suggestions, any helpful advice.