Here's a bit of an orthogonal answer to this quite-old question. It's not an answer to the question as literally asked, but more about the "spirit" of the question. It's also not an answer that was even possible for years after the question was asked. But now, it may be useful for some subset of folks who come looking for this information (as I did).
There are now several ways to get a more improved file listing in PowerShell that includes human-readable file sizes:
Windows Subsystem for Linux
Since the original question pointed out how easy this is in *nix, I realized that with WSL (Windows Subsystem for Linux) installed, it's a no-brainer to just use the Linux ls -lh from PowerShell:
PS> wsl ls -lh
... gives me the results I want (and it sounds like the OP did) on the current directory from within PowerShell. Better yet, if you have exa installed in your WSL instance, wsl exa -l is much prettier (and defaults to -h).
Note that if you want a different directory, there's a bit of a "trick" when using the wsl command. Since utilities running inside a WSL instance (such as ls) only understand Linux paths, you can't do something like:
PS> wsl ls -lh C:\
Instead, there are two options. First, you can use the WSL equivalent of the Windows path. E.g.:
PS> wsl ls -lh /mnt/c
PS> wsl eza -l /mnt/c
Or, just set the directory for the WSL instance with the --cd option, like so:
PS> wsl --cd C:\ ls -lh # or
PS> wsl --cd C:\ eza -l
This also works with relative directory paths:
PS> wsl --cd .. ls -lh # or
PS> wsl --cd .. eza -l
Don't worry (if you were) -- it's not going to change the current directory in PowerShell. When the WSL instance exits after running ls command, PowerShell will retain its current environment; just like running a subshell (in either PowerShell or a Linux shell like Bash).
PowerShell and WSL are each great on their own, but putting the two together gives you something even more powerful.
P.S. This works with either WSL1 or WSL2, but if you are going to be handling a lot of Windows files in WSL, version 1 is (currently) an order of magnitude faster. WSL2 is faster when using the virtualized ext4 filesystem.
Nushell for Windows
Like WSL, you may already have Nushell for Windows installed for one reason or another. If so, you can use a similar method as above to call Nushell's ls command, which is by far my person favorite for style/formatting:
PS> nu -c ls <optional_path>
╭─────────────────────────┬──────┬──────────┬──────────────╮
│ name │ type │ size │ modified │
├─────────────────────────┼──────┼──────────┼──────────────┤
│ C:\Windows\AppReadiness │ dir │ 0 B │ 21 hours ago │
│ C:\Windows\BRPP2KA.INI │ file │ 26 B │ 3 years ago │
│ C:\Windows\BRWMARK.INI │ file │ 448 B │ 2 years ago │
│ C:\Windows\Boot │ dir │ 4.0 KiB │ 2 days ago │
│ C:\Windows\Branding │ dir │ 0 B │ 2 years ago │
│ ... │ ... │ ... │ ... │
│ C:\Windows\twain_32 │ dir │ 0 B │ 2 years ago │
│ C:\Windows\twain_32.dll │ file │ 67.5 KiB │ 2 years ago │
│ C:\Windows\win.ini │ file │ 92 B │ 4 years ago │
│ C:\Windows\winhlp32.exe │ file │ 12.0 KiB │ 2 years ago │
│ C:\Windows\write.exe │ file │ 28.0 KiB │ 2 years ago │
╰─────────────────────────┴──────┴──────────┴──────────────╯
This is a bit simpler than the WSL alternative, since you don't need to worry about handling Windows <-> Linux conversion of path formats.
Bonus: Nushell includes a built in "data explorer" that will allow you to (among other things) page the results:
nu -c 'ls | explore'
LSDeluxe (et. al.)
The eza (f.k.a. exa) mentioned in my WSL notes above is written-in-Rust, but doesn't yet seem to be ported to Windows. However, a nice (also Rust-based) alternative appears to be lsd which is natively available for Windows and (while I have not installed or tested it personally) should run in PowerShell without issue.
This is probably the smallest and lightest solution of the three.