Ich denke, inzwischen dürfte jeder schon die Powershell mehr oder weniger intensiv benutzt haben- ein mächtiges Werkzeug, das unter anderem für die Administration von Exchange Online unersätzlich geworden ist. Leider ist die Lernkurve für die PowerShell recht hoch und anfangs ist doch recht viel copy & paste bei den recht kryptisch anmutenden Befehlszeilen angesagt.
Wie eigentlich alle Shells arbeitet die Powershell mit Pipes - also einem Datenstrom, der verschiedene Prozesse miteinander verbindet. Allerdings ist die Powershell hier nicht text-basiert, sondern arbeitet mit Objekten.
Um das etwas klarer zu machen, hier das allgemein bekannte Hello World, wie es sogar auf der Wikipedia-Seite zur Powershell zu finden ist:
Write-Host "Hallo Welt!"
Wikipedia verwendet leider keine Pipe. Bauen wir das Beispiel mal so um, dass eine Pipe verwendet wird:
"Hallo Welt!" | Write-Host
Man kann also das String-Objekt in den Write-Host Befehl leiten (pipen). Oder das Ganze in die Datei Test.txt schreiben (ok, das ginge natürlich auch einfacher :-) ):
"Hallo Welt!" | Set-Content "Test.txt"
Aber Moment- was bedeutet überhaupt String-Objekt? Ein Objekt basiert auf einer Klasse (Objekttyp) und erbt dessen Eigenschaften (Attribute, Properties) und Methoden (Funktionen). Wenn also "Hallo Welt" ein Objekt ist, welche Eigenschaften und Methoden hat es?
Da die Powershell auf .NET basiert, vermutlich alle, die .NET zur Verfügung stellt. Da wir aber mit einem Objekt der Klasse String arbeiten und nicht mit der Klasse direkt, fallen die sogenannten statischen Methoden weg (das sind in der Dokumentation von Microsoft die mit dem gelben 'S').
Also steht uns zum Beispiel die Method "Replace" zur Verfügung:
"Hallo Mond".Replace('Mond', 'Welt') | Write-Host