Разница между этими двумя командами в том, что параметр -Command является жадным. Он принимает все в командной строке после него, в то время как -EncodedCommand не является жадным. Первая команда действительно выполняет:
powershell -Command "4+5 > c:\log.txt"
Итак, новый экземпляр PowerShell обрабатывает перенаправление. Однако если вы используете параметр -EncodedCommand, новый экземпляр PowerShell не увидит перенаправление, поскольку вы не включили его в закодированную команду. Это может быть плохо, если среда, вызывающая PowerShell, не имеет перенаправления (как в запланированной задаче).
Итак, как показало «crb», вам нужно либо закодировать перенаправление в вашу команду, либо вызвать PowerShell из среды, которая может обработать перенаправление (например, cmd или другой экземпляр PowerShell).