PowerShell predefinito per emettere UTF-8 invece di UTF-16?

Per impostazione predefinita, PowerShell in Windows sembra essere in output UTF-16 (ad esempio, se faccio un semplice echo hello > hi.txt , poi hi.txt finisce in UTF-16). So che posso forzare questo al mio text desiderato codificando invece facendo echo hello | out-file -encoding utf8 hi.txt echo hello | out-file -encoding utf8 hi.txt , ma quello che vorrei è che sia solo l'impostazione predefinita quando utilizzo l'operatore di reindirizzamento. C'è un modo per raggiungere questo objective?

Utilizzando un decompiler .NET sull'assembly System.Management.Automation (aka "Assembly di Core Engine Core Microsoft Windows PowerShell") rivela questo frammento di codice:

 // class: System.Management.Automation.RedirectionNode private PipelineProcessor BuildRedirectionPipeline(string path, ExecutionContext context) { CommandProcessorBase commandProcessorBase = context.CreateCommand("out-file"); commandProcessorBase.AddParameter("-encoding", "unicode"); if (this.Appending) { commandProcessorBase.AddParameter("-append", true); } commandProcessorBase.AddParameter("-filepath", path); ... 

Quindi, sembra abbastanza difficile per me.

FYI, questo era in Windows 7 Enterprise x64 con PowerShell 2.0 installato.

Non è sicuro se questo farà esattamente quello che stai cercando, ma puoi provare a impostare la variabile di ambiente come indicato qui

 $OutputEncoding = New-Object -typename System.Text.UTF8Encoding