Automation und Delegation von PowerShell-Skripten mit ScriptRunner

Scriptrunner_Dashboard

In vielen IT Teams wird PowerShell zu Automationszwecken genutzt. Hierbei entstehen zumeist Probleme in der nicht zentralen Verwaltung, der unkontrollierten Änderungen und der eingeschränkten Delegation der Skripte. Aufgrund dieser Problematik bin ich auf die Softwarelösung Scriptrunner von AppSphere gestoßen, welche die oben genannten Probleme löst.

Installation von ScriptRunner

Die Installation des Scriptrunner Dienst und der benötigten Webapps erfolgt auf einem Windows Server 2019 Core, welcher Mitglied einer Domäne ist. Natürlich ist die Installation auch auf einen Windows Server 2019 mit Desktopdarstellung möglch.

Für die Installation von ScriptRunner ist das Server Core-Feature on Demand (FOD) erforderlich, welches mit einem DISM-Befehl nachinstalliert wird.

DISM /Online /Add-Capability /CapabilityName:"ServerCore.AppCompatibility~~~~0.0.1.0" /Source:drive_letter_of_mounted_ISO: /LimitAccess

Nach der Installation des FOD wird die Webserverrolle (IIS) auf dem Server installiert.

Install-WindowsFeature -Name Web-Server

Der Webserver wird für die Webapps benötigt und stellt die zentralen Funktionen der Software bereit.

Im Nachgang kann der Scriptrunner-Dienst installiert werden.

ScriptRunnerService_x.x.xxxx.x.exe -s -Force -EnablePS

Die Parameter -s führt die Installation im unbeaufsichtigten Modus aus. EnablePS aktiviert die PowerShell Remoting auf dem Host. Auch der Standard-Port 8091 kann mit dem Parameter -Port angepasst werden, sowie das Installationsverzeichnis mit dem Parameter -Instdir.

Wurde der Dienst erfolgreich installiert, können die Webapps mit folgenden Befehl installiert werden:


ScriptRunnerWebApps_x.x.xxxx.x.exe -s -Admin -Delegate -IISConfig -BackendURI="http://localhost:8091/ScriptRunner/"

Die WebApps stellen die zentralen Funktionen zum Verwalten und Delegieren der Skripte über eine Weboberfläche bereit.

Die meisten Einstellungen lassen sich mit dem PowerShell-Modul „ScriptRunnerSetting“ konfigurieren. Die Befehle des Moduls lassen sich mit dem Cmdlet anzeigen:

Get-Command -Module ScriptRunnerSettings

PowerShell Skripte Verwalten

ScriptRunner stellt bereits einige PowerShell Skripte über die „Action Packs“ bereit, um eine Vielzahl von Standard Tasks abbilden zu können. Die Action Packs erleichtern zudem den Einstieg in die Automation mit ScriptRunner.

Die Skripte werden in der zentralen Skriptbibliothek gespeichert und befindet sich standarmäßig unter:

C:\ProgramData\AppSphere\ScriptMgr

Mit dem Befehl kann der Pfad angepasst werden, um zum Beispiel die Verfolgung der Skripte mit einem Versionskontrollsystem wie GitHub zu gewährleisten.

Set-ASRSettings -ScriptLibraryPath D:\Skripte -Restart

In der AdminApp können über den Menüpunkt „Skripte | Cmdlets“ PowerShell Skripte hochgeladen und mit Tags versehen werden. Alternativ kann auch das ISE Add-on für solche Aufgaben genutzt werden. Das Add-on bietet zusätzlich eine Check-In/Check-Out Funktion und kann auf den gewünschten Clients installiert werden.

Neue Skripte in Bibliothek hochladen
Neue Skripte in Bibliothek hochladen

In dem Menüpunkt „Administrative Konten“ werden die Anmeldeinformationen hinterlegt, welche für die Verwendung der Skripte genutzt werden. Der ScriptRunner Host nutzt dazu den Windows Credential Store. Es können aber auch Passwordmanager wie Pleasant, Thycotic oder CyperArk angebunden werden. Um Zielsysteme anzusprechen auf denen Skripte ausgeführt werden sollen, lassen sich diese in dem Menüpunkt „Zielsysteme“ verwalten. Um spätere Abfragen und Berichte effektiver gestalten zu können, lassen sich auch hier Tags hinterlegen.

Aktionen erstellen und Delegieren

Die bereits oben genannten ScriptRunner Ressourcen lassen sich zu Aktionen zusammen führen. Diese können über einen Zeitplan gesteuert zum Beispiel gewisse Parameterwerte an eine hinterlegte E-Mail Adresse senden.

ScriptRunner erstellte Aktionen
ScriptRunner erstellte Aktionen

Alternativ können die Aktionen auch an nicht administrative Mitarbeiter delegiert werden.

Um eine neue Aktion zu erstellen, müssen im Assistenten folgende Informationen angegeben werden:

  • Auswahl des zuvor hochgeladenen Skripts
  • Anzeigename und Tags
  • Zielsystem
  • Erweiterte PowerShell Optionen (optional)
  • Skript-Parameter können vorbelegt oder mit einer aktiven Abfrage belegt werden
  • Optionen für Ergebnisse und Benachrichtigungen
  • Zeitplan (optional)
  • Delegation an Verwaltungsgruppen oder Idenditäten

Werden Aktionen an Mitarbeiter delegiert, können sie diese über eine weitere Weboberfläche (DelegateApp) ausführen. Der Mitarbeiter meldet sich mit seinen eigenen Anmeldeinformationen an und kann die Aktion ohne weitere Berechtigungen und Anmeldeinformationen auf dem Zielsystem ausführen. Der Mitarbeiter erhält sofort nach der Durchführung der Aktion einen Bericht mit den im Skript hinterlegten Rückgabewerten.

AD-Benutzerattribute über die DelegateApp anpassen
AD-Benutzerattribute über die DelegateApp anpassen

Über die AdminApp lassen sich zudem alle durchgeführen Aktionen und Berichte anzeigen. Es bietet die grundlegenden Informationen wie „Wer hat was wann“ durchgeführt und mit welchem Ereignis die Aktion abgeschlossen worden ist. Auch ein Export des Berichts als .txt und das weiterleiten per E-Mail ist möglich.

Scriptrunner Aktions-Report
Scriptrunner Aktions-Report