josephusflavius
Goto Top

Ist es irgendwie möglich ein Powershell Skript via Webcall erreichbar machen?

Hallo,

wir automatisieren gerade unsere Atlassian-Infrastruktur mit Groovy Skripten.
Ein Skript sollte um Rahmen der Ausführung ein Powershell Skript antriggern.
Wir würden also die Variablen der Groovy Skript als Argumente bei der Ausführung des PS Skripts berücksichtigen.

Problem:

das verwendete JIRA-Tool "Scriptrunner for JIRA" kann nur über https Webcalls kommunizieren.

Frage:

ist es irgendwie möglich einen Powershell Skript der lokalen Linux VM über einen Webcall starten?
Ist es irgendwie möglich einen Linux Script via HTTPS erreichbar zu machen oder wir müssen einen externen Hoster wie Postman dazwischen schalten?

Gibt es eventuell lokal laufende Tools, die via https erreichbar sind und ein JSON-Payload entgegennehmen können?

Gr.

JoFla

Content-ID: 672389

Url: https://administrator.de/forum/ist-es-irgendwie-moeglich-ein-powershell-skript-via-webcall-erreichbar-machen-672389.html

Ausgedruckt am: 13.04.2025 um 17:04 Uhr

Michi91
Michi91 08.04.2025 aktualisiert um 15:22:06 Uhr
Goto Top
Moin,
ich verstehe eure Pipeline nicht ganz.
Ein Powershell-Script wird meistens unter Windows ausgeführt. Unter Linux eher selten.

Versteh ich richtig:
- Das Grovy-Scriptrunner Script soll Powershellscripte auf entfernten Maschinen starten?

Vermutlich suchst du sowas wie WinRM? Oder Alternativ SSH, das gibts inzwischen auch für Windows

Grüße face-smile
JosephusFlavius
JosephusFlavius 08.04.2025 aktualisiert um 16:30:58 Uhr
Goto Top
Prinzipiell geht es um Folgendes:

Wir möchten den Kollegen Atlassian Self Service anbieten (JIRA Projekt anlegen usw.)
Dafür ist das Tool Scriptrunner für Jira optimal.

Problem:

Wir benutzen ENTRA Gruppen für die Auth innerhalb des Projektes. Die Rollen werden also ENTRA-Gruppen zugeordnet. Die Automatisierung muss sich also nicht nur um die Erstellung des neuen Projektes kümmern, sondern auch die notwendigen Gruppen in ENTRA anlegen, wozu wir schon die Powershell-Scripte haben.

Wir müssen jetzt nur noch erreichen, dass die Groovy Scripte von SR4J die Powershell Scripte starten und die für die Gruppen notwendigen Informationen in Form eines JSON-Payloads übergeben können.

Aktuell sind die Powershell Scripte auf der selben VM, die auch JIRA hostet und authentifizieren sich erfolgreich gegen ENTRA. Die einzige Baustelle ist die Kommunikation zwischen SR4J und einem externen Powershell Script.

Webcall oder irgendwelche REST API sind dafür einen optionalen Workaround, weil JIRA diese Schnittstelle onboard mitliefert.

Eine Option wäre noch, dass wir die Infos nicht via MS Graph (mit PS) an ENTRA senden, sondern als JSON direkt von JIRA an ENTRA REST API ...

Es würde natürlich auch bedeuten, dass wir die Microsoft API Dokumentation bemühen müssten, weil wir das MS Graph REST Format manuell zusammenbauen müssten statt mit Powershell commandlets zu arbeiten.

Gr.

JoFla
emeriks
emeriks 08.04.2025 um 16:48:23 Uhr
Goto Top
Ich habe für sowas ähnliches eine eigene Web API in PS geschrieben. Das geht ganz simple.

Man lässt per Powershell einen HttpListener laufen und füttert den mit Aufrufen wie

http://server:port/Command1

Im Script wertet man dann die gerufene URL aus, lässt entsprechende Aktionen ausführen und wartet auf das nächste Kommando.
Das Ganze kann man noch mit Parametern versehen. Und Authentifizierung natürlich, damit nicht jeder jedes API-Kommando ausführen kann.

z.B. habe ich das für unsere PrintServer gemacht, damit einige wenige, ausgesuchte Hotline-Mitarbeiter in der Lage sind, ohne erhöte Rechte die Spooler-Dienste durchzustarten.
Oder gleiches für den AADC, wenn mal a.s.a.p. eine Synchronisation nötig ist, und das ein Nicht-Admin auslösen soll.

E.
Crusher79
Crusher79 08.04.2025 um 23:17:27 Uhr
Goto Top
Moin,

naja via Webrequest ist ja schon lange bekannt:

https://www.php.net/manual/en/function.shell-exec.php

Nur mit der Sicherheit könnte es hapern. Generell kann man mit PowerShell auch ein Socket laufen lassen, der Anfragen unabhängig von einem Webserver entgegen nimmt.

https://rmauro.dev/socket-client-over-powershell/#sending-the-request

Schnipp - anderer Ansatz:

https://patternbuffer.wordpress.com/2012/09/14/triggering-shell-script-f ...

Via API MySQL füttern und über trigger Dinge auslösen. Du hättest Verlauf automatisch mit dabei. Kannst auch später Dinge anpassen und wiederholen, da die Daten in der DB vorliegen.

Noch mehr Ideen bekommst du vlt, wenn du nach shell_exec + php suchst. Bzw. nach Alternativen.

Im Netzwerk selber wäre es aber durchaus praktikabel mit einen Socket zu arbeiten. PowerShell hat alles dafür.


Ich kenne nur leider Jira, etc. nicht. Die Frage ist nun, wie sich das ganze sinnvoll kombinieren lässt.
eagle2
eagle2 10.04.2025 um 11:26:20 Uhr
Goto Top
Schau dir mal OliveTin an, das hat eine entsprechende REST-API und kann genutzt werden, um lokal Skripte auszuführen.