---
schema_version: "1"
id: d0d3494c5a0711ea16cf96f44a9b7908be795b5e646230d6306296005fb5281c
title: Microsoft Windows PowerShell Connector Examples
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/windows-powershell-connector/latest/microsoft-powershell-connector-examples.md
canonical_url: https://docs.mulesoft.com/windows-powershell-connector/latest/microsoft-powershell-connector-examples
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 1ea087975ed1f38b90a77a526390724b4d0401fcfa35fb96661f70e213e19157
description: MuleSoft Documentation Site
release: "2.1"
latest: true
---
---
product: Microsoft Windows PowerShell Connector
version: 2.1
is-latest-version: true
---

# Microsoft Windows PowerShell Connector Examples

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

## Execute a Command on a Remote Windows Machine

In this example, the Mule flow executes a command on a remote Windows machine:

![Flow with Listener, Execute command, and Logger](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-execute-command.png)

1.  Create a new Mule project in Anypoint Studio.

2.  Add the following properties to the `mule-artifact.properties` file to store your PowerShell
    credentials:

    ```text
    config.host=<IpAddress>
    config.username=<UserName>
    config.password=<Password>
    ```

3.  Place the properties file in the project’s `src/main/resources` directory.

4.  Drag an **HTTP > Listener** component onto the canvas and configure the following parameters:

    ![Listener configuration values in properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-http-props.png)

5.  Create a configuration for the HTTP Listener if you do not already have one:

    1.  Click the plus sign (+) on the right side of **Connector Configuration** to add a new HTTP
        Listener configuration.

    2.  Enter the following values:

        - **Host**: `localhost`

        - **Port**: `8081`

    3.  Click **OK**.

6.  In the **General** section, for **Path**, enter `/executecommand`.

7.  Drag the **Execute command** operation of the PowerShell Connector next to the HTTP Listener
    component.

8.  Add a new PowerShell global element to configure the PowerShell Connector:

    1.  Click the plus sign (+) on the right side of the **Connector Configuration** field.

    2.  Configure the global element:

        - Name  
          The name for the configuration

        - IP Address  
          The IP address of the machine on which to execute your script file or command

        - Username  
          The name of the user associated with the machine on which to execute your script file or
          command

        - Password  
          The password for the user

          Your configuration should look like this:

          ![Global element properties window for Windows configuration](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-config.png)

          The corresponding XML configuration is:

          ```xml
          <powershell:config name="Powershell_Configuration"
            doc:name="PowerShell Configuration">
          <powershell:windows-connection
          	host="${config.host}"
          	username="${config.username}"
          	password="${config.password}" />
          </powershell:config>
          ```

9.  Click **Test Connection**.

10. If the test is successful, click **OK**; if not, review and correct any incorrect parameters and
    test the connection again.

11. In the **General** properties editor of the PowerShell **Execute command** operation, configure
    the remaining parameters:

    - Display Name  
      The name to display for the Execute command operation

    - Command  
      The command to execute on the remote or local machine:

      ![Execute command operation properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-execute-command-props.png)

12. Verify that your XML looks like this:

    ```xml
    <powershell:execute-command
    	doc:name="Execute command"
    	config-ref="Powershell_Configuration"
    	command="ipconfig"/>
    ```

13. In **Mule Palette > Core**, select **Logger** and then drag it to the canvas after the **Execute
    command** operation.

14. Configure **Logger**:

    1.  Enter a display name for the Logger component.

    2.  For **Message**, enter `#[payload]` so the Mule log message comes from the payload.

    3.  Set **Level** to `INFO`:

        ![Logger properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-logger-props.png)

15. Click **File > Save**.

16. Right-click the project in Package Explorer and click **Run As > Mule Application**.

17. Open a browser and validate the response after entering the URL
    `http://localhost:8081/executecommand`.

    You should see the output of the **Execute command** operation in the browser and the Studio
    console.

## Execute a Script File

In this example, you create a Mule flow that executes a script file:

![Flow with Listener, Parse Template, Execute script file, and Logger](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-execute-script-file-flow.png)

To create the Mule flow:

1.  Drag an **HTTP Listener** component onto the canvas and enter `Listener` for **Display Name**:

    ![Listener configuration values in properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-http-execute-script-file.png)

2.  Create a configuration for the **HTTP Listener**:  
    This is required if you have not already done so.

    1.  Click the plus sign (+) to add a new HTTP Listener configuration.

    2.  Enter the following values:

        - **Host**: `localhost`

        - **Port**: `8081`

    3.  Click **OK**.

3.  In the **General** section, for **Path**, enter `/executescriptfile`.

4.  In the `<mule-project>/src/main/resources` folder, create a new file named `get-en-param.ps1`,
    with the following content:

    $logFile = "C:\\Windows\\Temp\\log.txt"
    Add-Content $logFile -Value "Parameter a is
    $a"
    Add-Content $logFile -Value "Parameter b is $b"
    Add-Content $logFile -Value "Parameter
    c is $c"
    Write-Host "Parameters received are $a $b $c"

5.  Drag a **Parse template** component next to the HTTP Listener.

6.  Configure the following parameters:

    ![Parse Template configuration values in properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-parse-template-props.png)

    1.  Enter a display name for the **Parse template** component.

    2.  Enter the location of the `get-en-param.ps1` file.  
        The XML reference should look similar to this:

        ```xml
        <parse-template doc:name="Parse Template" doc:id="abc1114d-4b12-42fd-8be6-e88c4dab1887" location="get-en-param.ps1" />
        ```

7.  Drag the **Execute script file** operation of the PowerShell Connector next to the **Parse
    template** component.

8.  In the **General** properties editor of the PowerShell **Execute script file** operation,
    configure the remaining parameters:

    1.  Enter the display name for the **Execute script file** operation.

    2.  In **General > File content**, enter `#[payload]` so that the file that contains the script
        comes from the payload file.

    3.  If your script requires parameters, add the parameters for each key and value pair:

        ![\["Execute script file operation configuration values in properties window"](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-execute-script-file.png)

9.  Add a **Logger** component after the **Execute script file** operation to display output in the
    Studio console, and configure the logger:

    1.  In the **General** tab, enter a display name for the Logger component.

    2.  For **Message**, enter `#[payload]` so the Mule log message comes from the payload.

    3.  Set **Level** to `INFO`.

        ![Logger properties window](/mulesoft/current/en-us/windows-powershell-connector/latest/_images/microsoft-powershell-logger-props.png)

10. Click **File > Save**.

11. In **Package Explorer**, right-click the project and then click **Run As > Mule Application**.

12. Open a browser and validate the response after entering the URL
    `http://localhost:8081/executescriptfile`.  
    You should see the operation’s output in the browser and the console.

## Mule XML Flow

The XML for your Mule flow should look similar to this:

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:powershell="http://www.mulesoft.org/schema/mule/powershell"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/powershell
http://www.mulesoft.org/schema/mule/powershell/current/mule-powershell.xsd">

    <configuration-properties file="mule-artifact.properties"/>

	<powershell:config name="PowerShell_Configuration" doc:name="PowerShell Configuration">
		<powershell:windows-connection
			host="${config.host}"
			username="${config.username}"
			password="${config.password}" />
	</powershell:config>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config"\>
		<http:listener-connection host="localhost" port="8081" />
	</http:listener-config>
	<flow name="Execute-Command-Flow" />
		<http:listener doc:name="Listener"
			config-ref="HTTP_Listener_config"
			path="/executecommand"/>
		<powershell:execute-command doc:name="Execute command"
		  config-ref="PowerShell_Configuration" command="ipconfig"/>
		<logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
	<flow name="Execute-Script-File-Flow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
		path="/executescriptfile"/>
		<parse-template doc:name="Parse Template"
		location="/home/me/get-en-param.ps1"/>
		<powershell:execute-script-file doc:name="Execute script file"
		 config-ref="Powershell_Configuration">
			<powershell:parameters >
				<powershell:parameter key="a" value="5" />
				<powershell:parameter key="b" value="10" />
				<powershell:parameter key="c" value="15" />
			</powershell:parameters>
		</powershell:execute-script-file>
		<logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
</mule>
```

## See Also

- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)

- [Anypoint Connector Configuration](https://docs.mulesoft.com/connectors/introduction/intro-connector-configuration-overview)

- [Using Anypoint Studio to Configure a Connector](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio)

- [Microsoft Windows PowerShell Connector](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-powershell-connector/)

- [OpenSSH for Windows](https://github.com/PowerShell/Win32-OpenSSH/releases#)

- [OpenSSH Installation Steps](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH)

- [Linux Install SSH](https://ubuntu.com/server/docs/)

- [Salesforce Help](https://help.salesforce.com)
