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:
Antworten