Programs that explicitly use a handle to the console (CON or
CON:) instead of stdin and stdout cannot be used as
subprocesses to Emacs, and they will also not work in shell-mode. The
default ftp client on Windows is an example of such a program - this
ftp program is mostly fine for use with
tramp, but not for M-x ftp (see How do
I use FTP within Emacs). There is no convenient way for either Emacs
or any shell used in
shell-mode to redirect the input and
output of such processes from the console to input and output pipes.
The only workaround is to use a different implementation of the
program that does not use the console directly. Microsoft’s new
PowerShell appears to be another such program, so that cannot be used
as a replacement shell for Emacs.