I have use both Cygwin and various iterations of Inerix/SFU/SUA as well as CMD + unxutils and putty, etc. It always feels like fighting the system.
I have really been won over by powershell (despite the name). I now just use powershell with some unixy aliases, a handful of scripts to emulate unixy behaviors and a few native windows ports like vim, infozip, ncftp, curl, wget, etc.
It kind of depends on what you are trying to do. If you want windows to actually be unix then nothing will feel quite right and it will be various flavors of frustrating. If you want to port software then there are lots of options with various pros and cons. If what you want is a powerful text-mode shell and scriping environment where you have a hope of replicating your automations onto servers or your buddies machines then take a hard look at powershell.