Arbeiten mit vRealize Orchestrator PowerShell Host

In einem früheren Artikel habe ich die Einbindung eines Windows PowerShell Host in den VMware vRealize Orchestrator aufgezeigt. Nun möchte ich das Arbeiten mit einem vRealize Orchestrator PowerShell Host genauer aufzeigen.

Nur ein simples Skript oder einen einzelnes Befehl (Cmdlet) auszuführen ist Out-of-the-Box sehr einfach. Jedoch hilft einem das in der Praxis nicht sehr viel, es muss mindestens das Ergebnis geprüft werden. Meistens muss aber auch mit den Ergebnissen weitergearbeitet werden oder diese übergeben werden.

Arbeiten mit vRealize Orchestrator PowerShell Host – Die Themen

  • Befehle oder Skripte ausführen
  • Externe Skripte ausführen
  • Arbeiten mit den Rückgabe
  • PowerShell Skript Ergebnis prüfen
  • Action aus PowerShell Cmdlet erstellen

Befehle oder Skripte Ausführen

Um einfach nur PowerShell Befehle oder ein kleines Skript auf einem vRealize Orchestrator PowerShell Host auszuführen bietet es sich an, den vom PowerShell Plug-in mitgebrachten Workflow „Invoke a PowerShell Script“ zu nutzen.

Weitere Infos aus der VMware Doku: Invoke a PowerShell Script

Simplen Befehl ausführen

vRealize Orchestrator PowerShell Host - invoke a powershell script - Host vRealize Orchestrator PowerShell Host - invoke a powershell script - Command

Die Log Ausgabe ist identisch mit der Ausgabe in der Konsole des vRealize Orchestrator PowerShell Host (Methode: getHostOutput()). Weiter arbeiten kann man jedoch mit dem Konsolen Log nicht, dazu aber später mehr.

vRealize Orchestrator PowerShell Host - invoke a powershell script - Log

Simples Skript ausführen

vRealize Orchestrator PowerShell Host - invoke a powershell script - Script

Das Skript hat trotz erfolgreicher Ausführung, by Design keine Rückgabe. Dies ist jedoch etwas schwierig, wenn z.B. auf Erfolg geprüft werden soll. Dazu aber ebenfalls in einem späteren Kapitel mehr.

vRealize Orchestrator PowerShell Host - invoke a powershell script - Log

Variablen des Workflows

Eingabevariablen der Workflows sind recht transparent für den Nutzer, die Ausgabe jedoch ist erst einmal nicht lesbar.

vRealize Orchestrator PowerShell Host - invoke a powershell script - Variables

Externes Skript ausführen

Als Alternative zu der direkten Ausführung des Skripts aus dem Workflow heraus, kann auch auf ein Skript auf dem vRealize Orchestrator PowerShell Host verwiesen werden. Diese Methode erachte ich als sinnvoll, wenn das Skript nicht nur vom vRealize Orchestrator verwendet wird und damit auch extern gepflegt wird.

Weitere Infos aus der VMware Doku: Invoke an External Script

vRealize Orchestrator PowerShell Host - invoke a external script - Host vRealize Orchestrator PowerShell Host - invoke a external script - External Script

Arbeiten mit den Rückgaben

Ich habe für dieses Kapitel das vorherige Beispiel der Windows Dienste erneut aufgegriffen. Das folgende Skript wird wieder mit „Get-Service“ alle Dienste auflisten, dann aber in JavaScript auswerten. Konkret sollen nur laufende Dienste ausgegeben werden.

Zeile 1-22: PowerShell Skript ausführen und auf Fehler prüfen

Zeile 24-38: Ergebnis Aufbereiten

PowerShell Skript Ergebnis prüfen

Hier greife ich ebenfalls ein früheres Beispiel auf, es soll wieder das Windows Eventlog gelöscht werden.

PowerShell Script:

PowerShell Script in vRealize Orchestrator eingebunden:

Durch die Ausgabe „System.log(„Result: “ + Result.invocationState );“ wird auch das Ergebnis des PowerShell Skripts sichtbar.

vRealize Orchestrator PowerShell Host - invoke a powershell script via API - Log

Übersicht der Methoden, welche auf das Ergebnis (PowerShellRemotePSObject) anwendbar sind:

Method

Description

getErrors()

Returns a list of errors reported by the PowerShell engine during script invocation.

getInvocationState()

Status of the script. The possible values are Completed or Failed.

getHostOutput()

Output of the script as it appears on the PowerShell console.

getResults()

Objects returned by the PowerShell engine. The returned object is of type PowershellRemotePSObject.

Quelle: Working with PowerShell Results

Action aus PowerShell Cmdlet erstellen

Wenn ein Cmdlet mehrfach verwendet werden wird, macht es Sinn diese als Action mit seinen Parametern als Input zur Verfügung zu haben. Ein weiterer Vorteil ist, mehrere Actions lassen sich viel schneller in übergreifende Workflows einbinden und innerhalb einer PowerShell Session aufrufen.

Ein gutes Beispiel für eine solche Verwendung ist der „Toggle VM State“ Beispiel Workflow aus dem Plug-In:

Toggle VM State - Example

Als simples Beispiel für die Generierung  habe ich mir das Cmdlet „Get-Command“ ausgesucht.

get-command

Generierung der Action

Für die Generierung der Action wird er mitgebrachte Workflow „Generate an action for a PowerShell cmdlet“ verwendet.

vRealize Orchestrator PowerShell Host - generate an action for a powershell cmdlet - Cmdlet vRealize Orchestrator PowerShell Host - generate an action for a powershell cmdlet - Action

Das Erstellen des Workflows ist optional. Für mich aber praktisch um direkt einen Test nach der Erstellung der Action auszuführen.

vRealize Orchestrator PowerShell Host - generate an action for a powershell cmdlet - Workflow

Mehr Details zu der Generierung von Actions sind der VMware Dokumentation zu finden: Generate an Action for a PowerShell Cmdlet

Durch den Workflow generierte Elemente

generierte Action

vRealize Orchestrator PowerShell Host - generated Action

generierter Workflow

vRealize Orchestrator PowerShell Host - generated Workflow - SchemavRealize Orchestrator PowerShell Host - generated Workflow - Attributes vRealize Orchestrator PowerShell Host - generated Workflow - Parameters

Test der generierten Elemente

vRealize Orchestrator PowerShell Host - Test Workflow - Host vRealize Orchestrator PowerShell Host - Test Workflow - Script Parameters

vRealize Orchestrator PowerShell Host - Test Workflow - Logs

Hat Ihnen der Beitrag gefallen?

Nutzen Sie gerne für Ihren nächsten Amazon Einkauf diesen Affiliate Link und unterstützt Sie damit den Author des Artikels: http://amzn.to/2pAgZOD

Um schnell und einfach Ihre lieblings Blogs und Autoren zu unterstützen, ist der Dienst Flattr ebenfalls eine tolle Möglichkeit!

Vielen Dank!

Kommentar verfassen