I'll offer another voice in support of the GnuWin32 toolset. Cygwin is fine but but I like the GnuWin32 focus on full Win32 compatibility and function from CMD (or COMMAND) shell. I've also noticed that GnuWin32 has been updating its packages frequently in the past few months.

A smart way to implement GnuWin32 and keep it up to date is using GetGnuWin32. The alternative is downloading the individual applications from SourceForge. GetGnuWin32 will automatically download the full complement of packages along with documentation, place them in proper subdirectories, create a subdirectory for you to copy to wherever you want to store the files and create a batch file to create Start Menu links as appropriate. When you decide to update packages you can run the software and it will only download the updated packages before creating a new instance for you. I typically move my GetGnuWin32 developed GnuWin32 folder to "c:\GnuWin32\bin\" and add that to my path. Once I have it in my preferred location I run the "update-links.bat" to create the appropriate Start Menu links. Full install is ~360MB but GetGnuWin32 can be tailored to a reduced set of GnuWin32 tools with a little configuration file editing (see the docs for this).

I concur with Ooble. PowerShell does offer ls function but not in a *nix compliant sense. PowerShell itself is much more powerful shell for the Windows platform and than CMD, COMMAND, BASH, or any other shell which predates it. If you have the will or wish to invest time in something that will give you the highest return of function for time invested in use then PowerShell is your logical choice. PowerShell is what happens when you decide to replace all the shell-based text parsing so useful on *nix systems with a similar shell-based object parsing more appropriate to Windows systems. (I may be a bit biased, I won a grand prize in Microsoft's PowerShell programming contest a while back and am favorably disposed to it since receiving my filthy lucre. It helps that the shell is so useful even if it takes a little mental retraining to think in terms of objects at the command line.)