Powershell: Fenster nach Skriptausführung nicht automatisch schließen

Wenn man ein Powershell-Skript testet und dieses nicht wie gewünscht funktioniert, gibt es nichts nervigeres, als wenn dieses dann einfach geschlossen wird. Die eventuell aufgetretenen Fehlermeldungen kann man dann nicht mehr einsehen. In der Powershell ISE ist dies natürlich kein Problem, aber beim Test auf einem Zielsystem, wo das Skript vielleicht automatisch laufen soll, schon eher. Schon bei Batch-Dateien konnte man sich mit dem Befehl „pause“ am Ende des Skripts behelfen. Bei der Powershell gibt es noch andere Möglichkeiten.

Weiterlesen

Powershell: UTF8-Problem beim Export

Leider wird es wohl immer ein leidiges Thema bleiben: Das Encoding! So ist  UTF8 mit dem sogenannten „Byte Order Mark“ immer wieder für die Inkompatibilität in den Programmen, in denen man versucht eine so codierte Datei zu öffnen, bekannt. So ist es auch, wenn man eine ältere Powershell-Version nutzen muss und dort z. B. versucht eine XML-Datei abzuspeichern. Was man auch versucht, das Encoding „zerhaut“ einem die ausgegebenen Dateien. Nur mit einem Trick habe ich es unter Windows Server 2008R2 mit einer frühen Powershell-Version (2.0 glaube ich) doch noch hinbekommen.

Weiterlesen

XML-Bearbeitung mit Powershell

Kürzlich habe ich eine Lösung gebraucht, die den Inhalt einer XML-Datei anpasst. Dabei geht es sich um Export-Daten einer Schnittstelle, die nun doch etwas abgeändert im Ziel-Programm ankommen müssen. Diese können aber im Quellprogramm nicht geändert werden und jede Anpassung im Zielprogramm wäre kostspielig. Deshalb habe ich mir einfach ein Powershell-Skript dafür geschrieben.

Weiterlesen

Replace und Escaping in Powershell

Kürzlich habe ich ein kleines Powershell-Skript geschrieben, dass den Inhalt einer XML-Datei anpassen soll, bevor dieser von einem anderen Programm weiterverarbeitet wird. Im Prinzip soll das ganze nichts wildes machen, sondern lediglich einige Begriffe ersetzen, die im Programm aus dem es exportiert wird nicht veränderbar sind. Dabei muss man allerdings auf das Escaping achten.

Weiterlesen

MessageBox mit Powershell auf anderen Computern anzeigen

Manchmal ist es notwendig auf einer ganzen Reihe von Computern eine Nachricht anzuzeigen um die Benutzer sofort über etwas zu informieren oder aufzufordern etwas bestimmtes zu tun, wie z. B. ein Programm zu schließen. Mit Hilfe der Powershell, WMIC und entsprechenden Rechten ist dies tatsächlich recht einfach möglich. Da anscheinend einige Leute schon mal nach einer Lösung für diese Anforderung gesucht haben und es einige Threads in Foren dazu gibt, zeige ich in diesem Artikel meine Lösung.

Weiterlesen

Windows Server 2016: WSUS startet nicht vernünftig

Bei Windows-Betriebssystem kommen einige Probleme in der einen oder anderen Form leider immer wieder auf. So habe ich einen WSUS-Server auf Basis des neuen Windows Server 2016 aufgesetzt und ein schönes Problem, dass ich vor Ewigkeiten auf einem Windows Server 2003 hatte: Bestimmte Dienste starten einfach nicht zuverlässig!

Weiterlesen

HyperV-Netzwerkadapter per Powershell umbenennen und entfernen

Um bei einigen VMs unter HyperV einen nun überflüssigen Netzwerkadapter zu entfernen, dachte ich mir, ich könnte dies per Powershell skripten um die VM nicht im Tagesbetrieb dafür ausschalten zu müssen. Das Skript könnte dann ausgeführt werden, wenn die VM sowieso für die Sicherung heruntergefahren wird.

Der entsprechende Befehl war schnell gefunden und tut auch was er soll:

 

Weiterlesen

Ordnerstruktur kopieren leicht gemacht

Öfters habe ich schon mal nach etwas brauchbarem dafür gesucht, konnte aber leider nichts finden. Deshalb habe ich vor einiger Zeit mal ein kurzes aber praktisches Skript dafür geschrieben. Es funktioniert recht simpel. Alle Ordner und wiederum deren Unterordner, die sich im Source-Path befinden, werden im Destination-Path in der gleichen Verschachtelung angelegt.

Zwar ist mein Studium aufgrund verschiedener Gründe im Pause-Modus auf unbestimmte Zeit, aber wenigstens konnte ich hier mal eine rekursive Funktion anwenden 😀