Powershell-Script als benutzerdefiniertes Paket einbinden und ändern

Vorbemerkung

Die grundsätzliche Vorgehensweise zur Einbindung von benutzerdefinierten Pakete (UDP = User Defined Packages) finden Sie hier: https://cebicon.atlassian.net/wiki/spaces/mypDeploy/pages/1957232731 .

Nachfolgend werden nur die spezifischen Einstellungen erläutert, die für die Verteilung von Powershell-Scripten zu beachten sind.

mypDeploy stellt für benutzerdefinierte Pakete nur den Transportmechanismus und einige Einstellungen zur Verteilung zur Verfügung.

Es liegt ausschließlich in der Verantwortung des Kunden, dass das Powershell-Script seine Aktionen korrekt, fehlerfrei und ohne Benutzerinteraktion ausführen kann!


Einbindung von Powershell.exe

Wählen Sie anschließend den Quellpfad für das Powershell-Script aus. Es handelt sich um den Ordner, in dem sich das auszuführende Script befindet. Wenn das Script seinerseits auf Dateien/Ordner zugreift, werden diese auch hier abgelegt.

In den vier Bereichen:

  • Installation Maschinenteil

  • Deinstallation Maschinenteil

geben Sie als Programm, das zur Installation ausgeführt werden soll, folgendes ein:

%WINDIR%\System32\WindowsPowershell\v1.0\powershell.exe>64

Als Parameter geben Sie bitte ein:

Minimal:

-file MyPowershellScript.ps1

Empfehlung:

-WindowStyle Hidden -NonInteractive -ExecutionPolicy Bypass -file MyPowershellScript.ps1

Dahinter können Sie ggf. weitere Parameter für Ihr Powershell-Script oder Aufrufparameter für die Powershell selbst eintragen. Die Vorgehnsweise wiederholen Sie für das Deinstallationskommando.

Standardvorgehensweise ist immer die direkte Ausführung des Scripts - über die Optionen können Sie aber bei Bedarf folgende Sondereinstellungen auswählen:

  • Kommando ohne Kommandozeilen-Interpreter ausführen: Standard ist aktiviert; bei der Ausführung von Powershell-Scripten macht es in aller Regel keinen Sinn, noch eine Instanz des Kommandozeilen-Interpreters dazwischen zu schalten.

  • Nicht auf das Ende des Kommandos warten: Standard ist deaktiviert; wenn Sie die Checkbox aktivieren, wird das übergebene Script gestartet und der mypDeployClient wartet nicht auf das Ergebnis, sondern macht sofort weiter.

  • Als Befehl des Kommandozeilen-Interpreters ausführen: Diese Funktion muss für Powershell-Scripte deaktiviert bleiben!

  • Konsolenfenster anzeigen: Diese Funktion muss für Powershell-Scripte deaktiviert bleiben!

  • Fehlercode ignorieren: Tragen Sie bei Bedarf hier alle Exitcodes des Scripts ein, die von mypDeploy als erfolgreich interpretiert werden sollen. Wenn Sie hier keine Änderung vornehmen, werden alle Exitcodes <> 0 als Fehler interpretiert.

1.jpg

x86/x64-Umleitung

Die mypDeploy-Clientkomponente ist ein 32-Bit-Programm und startet daher beim alleinigen Aufruf von powershell.exe auch eine 32-Bit-Powershellumgebung. Das kann in der Praxis zu Problemen führen, da viele Module auf einem x64-Betriebssystem nur in der x64-Umgebung geladen und ausgeführt werden dürfen.

Über den Appendix “>64” weisen Sie den mypDeploy-Client an, die Windows-eigene Umleitung auf die x86-Umgebung zu umgehen und die Powershell in der x64-Umgebung zu starten.

Wenn Ihr Powershell-Script grundsätzlich problemlos auch in einer x86-Umgebung gestartet werden kann, lassen Sie einfach “>64” weg oder geben als Programm nur “powershell.exe” ohne Pfad an und überlassen es dem Betriebssystem, eine Powershell-Umgebung bereit zu stellen.

Best Practice

Grundsätzlich reicht es aus, “-file Scriptname.ps1” als Parameter für den Aufruf einzutragen.

Wir empfehlen aber, immer zusätzlich die Parameter

  • -WindowStyle Hidden (verbirgt die Powershell-Konsole vor dem Anwender)

  • -NonInteractive (verhindert die Kommunikation der Powershell mit dem Anwender)

  • -ExecutionPolicy Bypass (sorgt dafür, dass das Script unabhängig lokal gesetzter Einschränkungen immer ausgeführt werden kann)

anzugeben.

Direkter Aufruf von PS1-Scripten

Sie können analog zu cmd-Dateien auch Powershell-Scripte direkt als Skript-Datei aufrufen.

4.jpg

Tragen Sie hierzu einfach den Namen der Script-Datei als Programm ein; die erforderlichen Aufrufparameter erzeugt mypDeploy dann selbstständig.

Falls ihr Powershell-Script Parameter benötigt tragen Sie diese in gewohnter Powershell-Notation “-Parameter Value” in das Parameter-Feld von mypDeploy ein.

5.jpg

Ausführungsoptionen

Es gelten folgende Ausführungsoptionen

  • Die Datei muss auf “.ps1” enden

  • Die Powershell wird mit Bypass-Policy, ohne neues Fenster und nicht interaktiv ausgeführt. Sofern andere Aufrufparameter benötigt, werden kann der vollständige Aufruf der Powershell mit den entsprechenden Parameter erfolgen https://cebicon.atlassian.net/wiki/spaces/mypDeploy/pages/2241822721

  • die Parameter können selbst angegeben werden; Seriennummer und Mandant können von mypDeploy übernommen werden. Die Parameter werden so wie sie sind 1:1 an Powershell übergeben; Konvertierung und Escapen von Sonderzeichen müssen selbstständig angegeben werden.

  • Gibt das aufgerufene Powershell-Script einen Returncode <> 0 als Erfolg zurück müssen diese Returncodes in den Ausführungsoptionen angegeben werden.

Version

Der direkte Aufruf von PS1-Scripten ist erst ab mypDeploy Version 3.40.8.0 und größer möglich.