PowerShell-Aktivitäten

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 3 Minuten Lesedauer
  • PowerShell baut auf dem Windows .NET Framework auf und dient zur Steuerung und Automatisierung der Verwaltung von Windows-Computern und -Anwendungen.

    PowerShell muss auf jedem MID Server installiert sein, der diese Aktivitäten verwendet. MID-Server, die PowerShell verwenden, müssen auf einem unterstützten installiert sein Windows Betriebssystem. ServiceNow Unterstützt PowerShell 3,0 bis 5,1.

    Das ServiceNow-Plugin Orchestration fügt Workflows diese grundlegenden PowerShell-Aktivitäten hinzu. Anweisungen zur Verwendung von Aktivitäten aus dem PowerShell-Aktivitätspaket finden Sie unter PowerShell-Aktivitätspaket.

    Legacy-PowerShell-Aktivität ausführen

    Die Aktivität PowerShell ausführen wird ausgeführt Windows PowerShell-Befehle auf einem MID-Server.

    Wichtig:
    Diese Aktivität ist veraltet und steht für neue Workflows nicht zur Verfügung. Um die Funktionalität dieser Aktivität zu ersetzen, erstellen Sie mit der PowerShell-Aktivitätsvorlage eine benutzerdefinierte, bereichsspezifische Aktivität. Workflows aus einem früheren Release, die die Aktivität „PowerShell ausführen“ verwenden, funktionieren weiterhin.

    Ergebniswerte

    Der Workflow-Designer kann mit activity.result einen Ergebniswert aus einem Skriptfeld der Aktivität zuweisen. Standardmäßig bestimmt der Erfolg oder Misserfolg der verwendeten PowerShell-Befehle den Ergebniswert der Aktivität „PowerShell ausführen“. Mögliche Ergebniswerte sind:
    • Success
    • Failure

    Scratchpad-Einträge

    Vom ausführenden Skript in stdout geschriebene Informationen werden erfasst und in der Variable activity.output an die Aktivität im zurückgegeben. Diese Informationen können für eine spätere Verarbeitung im Sensorskript der Aktivität analysiert, verarbeitet oder gespeichert werden (z. B. in einer Scratchpad-Variable).

    Ein Beispiel wäre die Ausführung des Befehls GET-date, um die aktuelle Uhrzeit des MID-Servers abzurufen. Dieses Sensorskript speichert die gesamte empfangene Ausgabe, aber sie kann so verarbeitet werden, dass nur die Zeit zurückgegeben und gespeichert wird.
    Abbildung : 1. PowerShell-Aktivität
    PowerShell-Aktivität
    Hinweis:
    Dies ist ein stark vereinfachtes Beispiel. In den meisten Fällen arbeitet das Skript für bestimmte Remote-Windows-Computer. Das Prinzip ist jedoch dasselbe – was auch immer in stdout geschrieben wird, wird in activity.output zurückgegeben und ist zur Verarbeitung verfügbar.

    Eingabevariablen

    Tabelle : 1. Eingabevariablen
    Feld Beschreibung
    Hostname IP-Adresse des Windows-Zielcomputers. Dieser Wert wird der Variable $computer für die Verwendung in Befehlen zugeordnet (siehe das Beispiel für das Feld Befehl). Die Variable für die PowerShell-Anmeldeinformationen $cred, die auf Informationen aus der ServiceNow-Tabelle „Anmeldeinformationen“ basiert, wird auf dem Computer authentifiziert, auf den von Hostname verwiesen wird.
    Befehl Geben Sie den auszuführenden PowerShell-Befehl ein. Sie können beispielsweise eine einfache WMI-Abfrage für einen Remote-Computer ausführen, auf den von der Variable hostname verwiesen wird. Der Befehl lautet:
    get-wmiobject <class> -computer $computer -credential $cred

    Wenn sich auf dem Computer keine Anmeldeinformationen authentifizieren, wird der Befehl im Kontext des MID-Server-Anwenders ausgeführt.

    Sie können nicht beides, einen Befehl und eine Skriptdatei, ausführen. Durch die Angabe eines Befehls wird das Feld Skriptdatei ausgeblendet.

    Sensorskript Das Skript, das mit den Ergebnissen der Probe ausgeführt wird. Die Ausgabe der Probe ist in der Variable output enthalten. Alle Fehler der Probe sind in der Variable error enthalten.
    Skriptdatei Die zugehörigen Listen namens Aktivieren Sie die Skriptdateisynchronisierung für Windows Verbesserte Sicherheitan. Sie können nicht beides, eine Skriptdatei und einen Befehl, ausführen. Durch die Angabe einer Skriptdatei wird das Feld Befehl ausgeblendet.
    PowerShell-Skriptvariablen Zusätzliche Parameter im JSON-Format, die von der angegebenen Skriptdatei verwendet werden.

    Status

    Der Aktivitätsstatus teilt der Workflow-Engine mit, wie mit der Aktivität verfahren werden soll.
    Tabelle : 2. Status
    Status Beschreibung
    Wird ausgeführt Die Workflow-Engine weiß, dass die Funktion onExecute der Aktivität gestartet werden soll.
    Fertig Die Ausführung der Aktivität ist abgeschlossen. Der Ergebniswert gibt das Ergebnis der Aktivität an.
    Abgebrochen Diese Aktivität oder der Workflow, der diese Aktivität enthält, wurde abgebrochen.
    Fügen Sie Workflow-Variablen für die Befehlszeile mit der üblichen Workflow-Variablensyntax hinzu. Wenn sich im obigen Beispiel <class> in der Workflow-Eingabevariablen myclass befunden hätte, würde der Befehl folgendermaßen aussehen:
    get-wmiobject $ {workflow. inputs. myclass } -computer $computer –credential $cred
    Similarly  if the variable  is a scratchpad variable named myclass , the command would look like :
    get -wmiobject $ {workflow. scratchpad. myclass } -computer $computer –credential $cred

    HResult-Codes

    Wenn ein PowerShell-Skript auf einen Fehler stößt, gibt der Windows-Computer möglicherweise einen HResult-Code als Teil der Fehlermeldung zurück.

    PowerShell-Aktivitäten können diesen Code lesen und interpretieren. Nicht alle PowerShell-Fehler enthalten einen HResult-Code. Im Falle eines fehlgeschlagenen PowerShell-Skripts können Sie den HResult-Code verwenden, damit der Workflow eine bestimmte Bedingung durchläuft.

    Wenn Sie beispielsweise ein Active Directory-Passwort auf ein Passwort zurücksetzen, das nicht den Richtlinienanforderungen entspricht (z. B. Mindestlänge oder Komplexität), gibt das PowerShell-Skript den HResult-Code –2146022651 zurück. Um diesen Code zu verwenden, erstellen Sie eine Aktivitätsbedingung mit dem Bedingungswert activity.hresult = –2146022651. Wenn das PowerShell-Skript diesen Code bei Ausführung der Aktivität zurückgibt, durchläuft der Workflow diese neue Bedingung.