PowerShell mit C# generieren und scheitern? Unicode anstatt UTF-8!

April 20th, 2009

Ich hatte die Gelegenheit, meinem Kollegen Jan bei einem Projekt zu helfen. Es geht darum, aus einer C# Applikation PowerShell Scripte zu erzeugen. Diese Scripte werden dann später auf einem Server ausgeführt. Klingt erst mal nicht wirklich spannend. Spannend wurde es dann, als der Code für die Erzeugung abgeschlossen wurde und das erste mal die Scripte ausgeführt wurden. Die PowerShell meldete eine kryptische Exception:

image

Unexpected token in expression or statement.

Beim Editieren des PowerShells mit dem neuen Windows 7 PowerShell Editor kommt beim Speichern folgende Meldung:

image

Und schon hatten wir den fehlenden Hinweis. .NET Applikationen arbeiten per Default mit UTF-8. Die PowerShell kommt aber wohl mit einigen Zeichen nur klar, wenn die Datei mit dem Unicode Encoding geschrieben wurde. Der Code wurde also kurz erweitert:

   1: //Alt

   2: //File.WriteAllText(saveTo, fileContent);

   3: //Neu

   4: File.WriteAllText(saveTo, fileContent, System.Text.Encoding.Unicode);

Es kann manchmal so einfach sein ;-) Ein kurzer Test per NotePad2 zeigt das Ergebnis:

Vorher:

image

Nachher:

image 

Sollte irgendjemand den genauen Grund kennen, dann wäre ich für einen echten Grund, warum die PowerShell hier streikt dankbar. Kurze Recherchen haben leider nichts gefunden :-S

Ciao Marco

Categories: .NET

Tags: , , Leave a comment

Feed

http://marcoscheel.de / PowerShell mit C# generieren und scheitern? Unicode anstatt UTF-8!