I see now in the start menu there is an entry "Subsystem for UNIX-based Applications" but oddly it didn't come up with orange highlight (which new entries normally do), so I didn't notice it. Here it is expanded.
Choosing Korn Shell from there, opens it up. It runs the line C:\Windows\posix.exe /u /c /bin/ksh -l
And then ls works
Whereas running ksh.bat alone, doesn't work.
The difference between that command line, and ksh.bat
Is ksh.bat does posix /u /c /bin/ksh %1 %2 %3 %4 %5 %6 %7 %8 %9
which if you run ksh.bat with no parameters, it equates to posix /u /c /bin/ksh
i.e. no -l
(i.e. no dash el)
Whereas the korn shortcut, does the same line but with -l.
If you run ksh -l then that would be running ksh.bat with -l and as c:\windows\posix.exe is covered in the path, looking at the command line used by ksh.bat, it is(when with -l) then the same as what the shortcut does, and thus works just as the shortcut works.
So, either run from the shortcut, or run the bat file with ksh -l
Prior related question Where are the EXEs for Subsystem For Unix Applications so I can use it?