18. Juni 2011 · 13:07
Zur Zeit beschäftige ich mich auf der Arbeit ziemlich viel mit PowerShell, da die Sprache super Möglichkeiten bietet Windows zu automatisieren. Meiner Ansicht nach wäre Linux wohl nicht so groß geworden hätte Microsoft schon früher eine Script Sprache zu Automatisierung bereitgestellt die anständig entwickelt wurde. Aber gut darum solls hier nicht gehen…
Gestern beschäftige ich mit dem Signieren von PowerShell Scripts um diese später in der kompletten Firma sicher ausführen zu können. Wie die Windows-CA Einrichtung funktioniert kann man hier nachlesen, um was es mir geht ist die eigentliche Signierung der Scripts. Dies kann wie folgt durchgeführt werden:
namespace Holding
Set-AuthenticodeSignature c:\foo.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Dies soll dazu führen das der Script C:\foo.ps1 mit dem ersten Zertifikat aus dem lokalem Zertifikatestore “CurrentUser\My” signiert wird.
Wenn man nun allerdings den Script mit der von Microsoft entwickelten PowerShell ISE geschrieben hat, kommt es bei signieren immer und immer wieder zu einem “Unknown Error”. Nun kann man allerdings hergehen, den Inhalt der mit ISE geschrieben Script Datei in eine neue Datei in einem normalen Editor kopiert, diese abspeichert und signiert funktioniert es wunderbar.
Die logische Schlussfolgerung lautet also, die PowerShell ISE speichert die Scripts auf irgendeine andere Art und Weise ab, die nicht kompatibel zu der Signier-Funktion ist.
Warum dies geschieht ist mir völlig schleierhaft. Was macht es für einen Sinn eine eigene Entwicklungsumgebung raus zubringen, mit welcher man keine 100% kompatiblen Scripts erstellen kann?!?!
Naja Gott sei Dank gibt es von einem Drittanbieter ein Ersatztool. Das ganze nennt sich PowerGUI und ist kostenlos hier downloadbar.