It is normal for windows to reject certain things like a dash line for example but allow and underscore. Go figure...win 10 is it's own confusing world.
If you mean the vertical bar symbol " | " this is because the command prompt uses it to "pipe" information - basically, you can route the output from one executable to another using | which many programs might do even if not running via the command prompt.
Same thing with characters like > which redirects output from an executable to a file, and we all know others like * : \ / ? ".