PowerShell 実行アクティビティに対するパラメーターの受け渡しIssue 場合によって、次のことを行う必要があります。 MID サーバーで PowerShell スクリプトを実行する、または MID サーバーにリモートマシンでスクリプトを実行させる。 PS スクリプトにパラメーターを渡す。 スクラッチパッドから PS スクリプトに渡されるパラメーター、またはワークフローへの一部の入力変数から計算されるパラメーターを取得する。 この記事では、これらすべてのケースについて、簡単なワークフローの例を 2 つ使用して説明します。 ワークフローの実装 1:アクティビティからパラメーターを設定する [Orchestration] > [MID サーバープロパティ (MID Server Properties)] に移動し、オプション [MID サーバー] に有効な MID サーバーの名前が含まれていることを確認します。新しいワークフローを作成し、「PowerShell のテスト 1」などの名前を付けます。Start と End の間に、次の値を使用して PowerShell 実行アクティビティを追加 (成功と失敗の両方の出力を接続) します。 名前:PS のテストホスト名:(コマンドを実行する必要があるマシン、テストにはlocalhostで問題ありません。)コマンド:Write-Host "Updating user $user_name with id $user_id" PowerShell スクリプト変数:{"user_id": "1234", "user_name": "foo"} センサースクリプト: doProcessResponse(); function doProcessResponse() { workflow.scratchpad.midoutput = activity.output; } PS のテストと End の間に、次の値を使用してスクリプト実行アクティビティを追加します。 名前:スクラッチパッドの印刷スクリプト: workflow.info("The MID Server returned: {0}", workflow.scratchpad.midoutput); ワークフローは次のようになります。 Begin ==> PS のテスト ==> スクラッチパッドの印刷 ==> End ワークフローの実装 2:スクラッチパッド内の値からパラメーターを設定する [Orchestration] > [MID サーバープロパティ (MID Server Properties)] に移動し、オプション [MID サーバー] に有効な MID サーバーの名前が含まれていることを確認します。新しいワークフローを作成し、「PowerShell のテスト 2」などの名前を付けます。Start と End の間に、次の値を使用してスクリプト実行アクティビティを追加します。 名前:スクラッチパッドに値を入れるスクリプト: workflow.scratchpad.user_id = "1234";workflow.scratchpad.user_name = "foo"; 注:ここでは、スクラッチパッドにいくつかの変数を追加しています。これらのスクラッチパッド変数は、ワークフロー入力変数、要求アイテム変数などから取得した値に基づいて計算できます。 スクラッチパッドに値を入れると End の間に、次の値を使用して PowerShell 実行アクティビティを追加 (成功と失敗の両方の出力を接続) します。 名前:PS のテストホスト名:(コマンドを実行する必要があるマシン、テストにはlocalhostで問題ありません。)コマンド:Write-Host "Updating user $user_name wid id $user_id" PowerShell スクリプト変数:{"encrypted:user_id": "${workflow.scratchpad.user_id}", "user_name": "${workflow.scratchpad.user_name}"} センサースクリプト: doProcessResponse();function doProcessResponse() {workflow.scratchpad.midoutput = activity.output;} PS のテストと End の間に、次の値を使用してスクリプト実行アクティビティを追加します。 名前:スクラッチパッドの印刷スクリプト:workflow.info("The MID Server returned:{0}", workflow.scratchpad.midoutput); ワークフローは次のようになります。 Begin ==> スクラッチパッドに値を入れる ==> PS のテスト ==> スクラッチパッドの印刷 ==> End ワークフローを実行する ここで、タイトルバーの緑色の [->] をクリックして、ワークフローエディターからこのワークフローを実行できます。 このワークフローをカタログアイテムにアサインして、アイテムの注文時に実行することもできます。 結果をチェックする ワークフローが実行されたら、[ワークフロー] > [すべてのコンテキスト (All Contexts)] に移動し、そこでワークフローを検索して、ワークフローの動作をチェックします。 PowerShell のテスト 1 を選択します。(リストを新しい日付から古い日付の順に並べ替え、リストの一番上のワークフローを見つけます。) コンテキストにアクセスし、関連リストの [ワークフローログ] に移動します。 「MID サーバーの戻り値:ユーザー foo を ID 1234 で更新」というメッセージが表示されているエントリを確認します。 このコンテキストのスクラッチパッドも確認します。(場合によっては、フォームにスクラッチパッドフィールドを追加する必要があります。) 1 番目のワークフローのスクラッチパッドは次のようになります:{"midoutput":"Updating user foo with id 1234"} 2 番目のワークフローのスクラッチパッドは次のようになります:{"midoutput":"Updating user foo with id 1234","user_id":"1234","user_name":"foo"} PS スクリプトにパラメーターを渡す PS スクリプトに変数を渡すには、変数を含む JSON 形式のオブジェクトを PowerShell スクリプト実行アクティビティの [PowerShell スクリプト変数] フィールドに追加する必要があります。 この例では、以下を使用しました。 { "user_id": "1234", "user_name": "foo" } 数値、ブール値、その他の複雑なオブジェクトなど、他の種類のデータを渡すことができます。 これらのパラメーターは、暗号化して MID サーバーに渡すことができます。そのためには、各変数名の前に encrypted: を付加するだけです。この例では、user_id パラメーターを次のように暗号化します。 { "encrypted:user_id": "1234", "user_name": "foo" } その結果、プローブのペイロード内の次のパラメーターが MID サーバーに送信されます。 <parameter name="powershell_user_id" value="QOtbi3Ftvks="/> <parameter name="powershell_param_user_name" value="foo"/> スクラッチパッドから値を取得する スクラッチパッドから何かを取得するには、Javascript 拡張機能を使用する必要があります。 ${workflow.scratchpad.a_variable} [文字列] アクティビティフィールドで JS 拡張機能を使用できます。この場合、[PowerShell スクリプト変数] フィールドを次のように記述できます。 { "encrypted:user_id": "${workflow.scratchpad.user_id}", "user_name": "${workflow.scratchpad.user_name}" }