Create a PowerShell activity

task australia Updated Sep 10, 2026 5 min read t_CreateAPowershellActivity.md
Raw file servicenow.com

Create a custom PowerShell activity return data to a workflow from a host using Microsoft PowerShell.

Before you begin

Role required: activity_creator or workflow_admin

About this task

ServiceNow supports PowerShell 3.0 to 5.1.

Procedure

  1. Create a custom activity.

    This action creates a custom activity using a template.

  2. After setting up general properties and creating input variables, configure the PowerShell Execution Command.

Map the input variables

Use the variables you created to configure the command that Orchestration executes on the MID Server.

Target host

Host name or IP address of the target server for this PowerShell activity.

Script type

Type of PowerShell script to run on the PowerShell host. Available options are:- Custom PowerShell command

  • MID Server script file

MID Server script file

The MID Server script file contains the PowerShell scripts. This field is available when the Script type selected is MID Server script file.

Command

PowerShell command the activity executes. This field is available when the Script type selected is Custom PowerShell command. You can create your commands by dragging and dropping input variables from the variable builder into this field.

PowerShell variables

Name-value pairs to pass to the host with PowerShell. You can create these variables manually, or drag input variables into the Value field. Encrypted input variables retain their encryption, regardless of the data type settings in this field. If you type in a value and select the Encrypted data type, your value appears in plain text. It is only encrypted when it passes to the ECC Queue.

Use MID Service Account

If checked, this activity authenticates on the target host using the credentials of the MID Server service account only, without trying any other credentials. Note: The Credential tag field is not available.

Credential tag

Credential tag this activity must use to run PowerShell commands on the host. If this field is left blank, the MID Server tries all the available credentials until it finds a valid one, ending with the MID Server service account. If a credential tag is defined, the MID Server tries the credentials with that tag specified only and does not try the MID Server service account. Note: This field is not available when the Use MID service account check box is selected.

Required MID Server capabilities

MID Server to use for querying PowerShell, by capabilities. By default, the system selects a PowerShell MID Server.

**Note:** You can map parameter values in a test payload to variables in the **Outputs** tab automatically. See [automap output variables](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/integrate-applications/orchestration/automap-output-variable-inputs.md).

What to do next

Finish creating your PowerShell activity by creating output variables, creating a parsing rule, or Conditions. Refer to the create custom activities topic to know your template options.

Parent Topic:Orchestration custom activity templates

PowerShell template execution parameters

You use execution parameters to create the input process script in the Pre Processing form of the activity designer.

For descriptions of the Powershell command fields, see the table in Configure the PowerShell execution command.

Note: You must use the executionParam. prefix with all variables in this table.

Name

Variable

Type

Usage

Source

source

String

Target host on which to execute the command.

Script type

script_type

Enumeration

Type of script to run. The possible types are:- command: Custom PowerShell command.

  • file: Identifies the MID Server script file to run.

Command

command

String

Command sent to the MID Server for it to run on the target host.

MidScriptFile

midScriptFile

Reference

Reference sys_id of the MID Server script file to execute, when the script_type is file.

PowershellVariables

powershellVariables

Array of hashmap

Hashmap of JavaScript objects with name, value, and type for each object. The type of each object can be one of plain, encrypted, boolean, or null, corresponding to the PowerShell variable type selected in the inputs tab. For example, you might enter:``` var newParameter = {"name":"parameterName","value":"parameterValue", "type": "plain" }; executionParam.powershellVariables.push(newParameter);

Text
</td></tr><tr><td>
Credential tag
</td><td>
credential\_tag
</td><td>
String
</td><td>
Specific credential tag this activity must use to run PowerShell commands on the host.
</td></tr><tr><td>
MidCapabilities
</td><td>
midCapabilities
</td><td>
String \(comma separated\)
</td><td>
List of required MID Server capabilities.
</td></tr><tr><td>
ValueCapabilities
</td><td>
valueCapabilities
</td><td>
Array of hashmap
</td><td>
Capability values used to select the MID Server. For more information, see [MID Server capabilities](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/servicenow-platform/t_ConfigureCapabilities.md). If there are additional capabilities that are assigned by value, use this example to customize the MID Server selection:```var valueCapability = {'NEW_MID_CAPABIILTY':'NEW_MID_CAPABILITY_VALUE'};executionParam.valueCapabilities.push(valueCapability);
## Powershell post-processing parameters and payload parsing

Use these parameters to create a post-processing script, payload parsing, and tagging.

Name

Variable

Type

Usage

Tags

tags

Hashmap of tag values to return from the PowerShell command.

Contains the tags used to extract output using the PowerShell commands. The tag output is delimited by double percentage signs, as in %%tagname%% … %%. Set up the command using the format in this example:``` Write-Host %%tagname1%% output1 line 1 output1 line 2 … Write-Host%%

Write-Host %%tagname2%% output2 line 1 output2 line 2 … Write-Host%%

Text
 The tags returned are JavaScript hashmap objects in which each key is prefixed with **tag** appended with the **tagname**.

{"text": "", "tagtagname1":"output1 line1\noutput1 line2\n", "tagtagname2":"output2 line1\noutput2 line2\n"}

Text
</td></tr><tr><td>
Hresult
</td><td>
hresult
</td><td>
String
</td><td>
Contains any **hresult** returned from the PowerShell command. If no **hresult** is returned, this parameter is **null**.
</td></tr><tr><td>
Output
</td><td>
output
</td><td>
String
</td><td>
Contains the raw output from the PowerShell command.
</td></tr><tr><td>
EccSysID
</td><td>
eccSysID
</td><td>
String
</td><td>
Contains the reference ID associated with the ECC Queue input message returned by the activity.
</td></tr><tr><td>
ErrorMessages
</td><td>
errorMessages
</td><td>
String
</td><td>
Contains any error messages retrieved from the PowerShell command. This value is **null** if there are no error messages.
</td></tr></tbody></table>
Search documentation
Search document titles and file paths on the australia branch