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.
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.
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.
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.