PowerShell Quirk: Here-Strings und Zeilenumbrüche.

Neulich im TechNet-Forum: Jemand beschwerte sich darüber, dass der folgende Code an der Konsole „True“ ausgibt, über Skriptausfürhung (ISE, Task Scheduler, Mit PowerShell ausführen) dagegen „False„:

Der Grund dafür ist einfach und wird mehr oder weniger sofort ersichtlich, wenn man den folgenden Code an der Konsole und in der ISE ausführt:

An der Konsole ist am Ende der ersten Zeile ein NewLine, ASCII(10) also. Und nur das. In der ISE (oder wenn wir das Skript abspeichern und ausführen), sehen wir hingegen die für Windows-Textdateien übiche CR+LF-Kombi (ASCII(13) + ASCII(10)). Durch das Splitten nach „n" (ASCII(10)) bleibt die unsichtbare 13 stehen und führt dazu, dass der exakte Vergleich scheitert.

Eine Lösung könnte sein, die CR's herauszufiltern:

oder

Meine übliche Lösung ist, für so etwas keine Here-Strings zu verwenden, sondern Arrays einfach explizit zu deklarieren. Um der Lesbarkeit Willen kann man das trotzdem schön anordnern:

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.