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:
> > Unexpected token in expression or statement. > >
Beim Editieren des PowerShells mit dem neuen Windows 7 PowerShell Editor kommt beim Speichern folgende Meldung:
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:
<span class="lnum"> 1:</span> <span class="rem">//Alt</span>
<span class="lnum"> 2:</span> <span class="rem">//File.WriteAllText(saveTo, fileContent);</span>
<span class="lnum"> 3:</span> <span class="rem">//Neu</span>
<span class="lnum"> 4:</span> File.WriteAllText(saveTo, fileContent, System.Text.Encoding.Unicode);
Es kann manchmal so einfach sein ;-) Ein kurzer Test per NotePad2 zeigt das Ergebnis:
Vorher:
Nachher:
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