В код ps сейчас посмотреть возможности нет, но предположу что в последующие разы из-за параметра -append ps предполагает что вы знаете что делаете и выдаёт даные как есть.
А первая попытка вывода создаёт файл. И опять же, ps предполагает, что вы знаете что делаете и, раз не указываете кодировку, psv2 при создании файла использует кодировку ascii и именно в ней выводит даные.
вот еще информация к размышлению Why does .net uses the UTF16 encoding for string ,... видимо, причина utf-8 при -append именно в этом
А первая попытка вывода создаёт файл. И опять же, ps предполагает, что вы знаете что делаете и, раз не указываете кодировку, psv2 при создании файла использует кодировку ascii и именно в ней выводит даные.
вот еще информация к размышлению
Why does .net uses the UTF16 encoding for string ,... видимо, причина utf-8 при -append именно в этом