コンテンツにスキップ

RSエージェント実行ノードのエラー検知

RSエージェント実行ノードを利用して対象クライアントPC上でスクリプトを実行し、その処理結果からエラーの有無を自動判定してフローを分岐させるサンプルフローとなります。 ローカル環境でのスクリプト実行結果のエビデンスチェックや、自動化処理の異常検知などに活用できます。

サンプルフロー(RSエージェント実行ノードのエラー検知)

以下の「サンプルフローのJSONコードを展開する」をクリックし、中のJSONデータをコピーしてロボシュタインのメニューから「インポート」を実行してください。

サンプルフローのJSONコードを展開する
[
    {
        "id": "6cd1d6e42db0e9b7",
        "type": "inject",
        "z": "3012ffee30c77aed",
        "name": "実行",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 160,
        "y": 4240,
        "wires": [
            [
                "8bd316c37b79a072"
            ]
        ]
    },
    {
        "id": "8bd316c37b79a072",
        "type": "clagent-psbuild",
        "z": "3012ffee30c77aed",
        "name": "PowerShell生成ノード(日時フォーマット)",
        "scripts": "Get-Date -Format \"yyyy/MM/dd HH:mm:ss\"",
        "scriptsout": "ps",
        "scriptsoutType": "msg",
        "append": false,
        "x": 440,
        "y": 4240,
        "wires": [
            [
                "ce6d8c5fef1972bd"
            ]
        ]
    },
    {
        "id": "ce6d8c5fef1972bd",
        "type": "clagent-run",
        "z": "3012ffee30c77aed",
        "name": "RSエージェント実行ノード",
        "command": "exec",
        "listout": "",
        "listoutType": "msg",
        "statout": "",
        "statoutType": "msg",
        "getfilename": "",
        "getfilenameType": "str",
        "getfileout": "payload",
        "getfileoutType": "msg",
        "getfilebytes": false,
        "putfilein": "",
        "putfileinType": "bin",
        "putfilename": "",
        "putfilenameType": "str",
        "putfileout": "",
        "putfileoutType": "msg",
        "execps": "ps",
        "execpsType": "msg",
        "execout": "payload",
        "execoutType": "msg",
        "execonconsole": true,
        "rpaproduct": "",
        "rpaproductType": "str",
        "rpaout": "",
        "rpaoutType": "msg",
        "target": "",
        "targetType": "str",
        "x": 720,
        "y": 4240,
        "wires": [
            [
                "e7c9e50367d6d3bc"
            ]
        ]
    },
    {
        "id": "e7c9e50367d6d3bc",
        "type": "switch",
        "z": "3012ffee30c77aed",
        "name": "エラーの判定分岐",
        "property": "payload.error",
        "propertyType": "msg",
        "rules": [
            {
                "t": "nnull"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 1000,
        "y": 4240,
        "wires": [
            [
                "9089cc70ea037e14"
            ],
            [
                "322192144db74570"
            ]
        ]
    },
    {
        "id": "9089cc70ea037e14",
        "type": "debug",
        "z": "3012ffee30c77aed",
        "name": "エラー検出ログ",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1280,
        "y": 4200,
        "wires": []
    },
    {
        "id": "322192144db74570",
        "type": "debug",
        "z": "3012ffee30c77aed",
        "name": "正常完了ログ",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1280,
        "y": 4280,
        "wires": []
    }
]

上記をインポートすると、以下のように適切な間隔で配置された処理ラインが作成されます。

RSエージェント実行ノードのエラー検知フロー


フローの概要

PCローカル(対象クライアント)上でPowerShellスクリプトを実行し、その実行結果(出力データ)の中にエラー情報が含まれているかどうかに応じて、後続の処理ルートを自動的に2つに分岐させます。

ステップ 使用ノード 処理内容
① 日時の生成 PowerShell生成ノード 現在日時を yyyy/MM/dd HH:mm:ss 形式で取得するためのPowerShellスクリプト(msg.ps)を定義します。
② コマンドの実行 RSエージェント実行ノード 指定したホストIDのクライアントPC上で、前段のPowerShellスクリプトを実行し、その結果を msg.payload に格納します。
③ 条件の判定 switchノード(エラーの判定分岐) スクリプトの実行結果(msg.payload)の中に、「error」というエラープロパティが存在するか判定します。
④ ログの出力 debugノード 判定結果に応じて「エラー検出ログ」または「正常完了ログ」へ分岐出力します。

💡 switchノードによるエラー判定の仕組み

本フローの肝となる switchノード(表示名:エラーの判定分岐) では、前段のRSエージェント実行ノードから返された msg.payload.error の中身をチェックしています。画面上のプロパティに並んでいる 条件番号(1, 2) に応じて、メッセージが流れる出力端子が自動的に振り分けられます。

  • 【1】 Nullではない (is not null) ➡ 出力端子①(エラー検出ログ)へ
    • 解説:PowerShellの実行中に何らかの異常が発生した場合、msg.payload.error にエラー情報(値)が格納されます。値が存在する(Nullではない)ため、画面上の条件1に合致し、上側の出力端子から「エラー検出ログ」へと処理が流れます。
  • 【2】 その他 (else) ➡ 出力端子②(正常完了ログ)へ
    • 解説:PowerShellが何のエラーもなく正常に完了した場合、errorプロパティ自体が存在しないか中身が空(Null)になります。すると条件1をすり抜けるため、自動的に条件2の「その他」に引っかかり、下側の出力端子から「正常完了ログ」へと流れます。

💡 PowerShell生成ノードの役割

本フローの冒頭に配置されている PowerShell生成ノード は、RSエージェントが導入されているクライアントPCに対して実行したいPowerShellスクリプトを事前に設定・定義するためのノードです。このノードは、後続の RSエージェント実行ノード と常に対(セット)で利用する仕組みになっています。


使用している主要ノードの技術解説

本フローの制御には、以下のノードの仕組みを利用しています。ノードの詳しい仕様や応用的な使い方については、それぞれの専門ページをご確認ください。


設置後の設定

本フローを動作させるには、対象となるPC環境に合わせて「RSエージェント実行ノード」のプロパティから、スクリプトを発行したい対象ホストのIDを正しく指定する必要があります。

「RSエージェント実行ノード」の設定

フロー内の 「RSエージェント実行ノード」 のプロパティを開き、環境に合わせたパラメータを指定してください。今回は前段のPowerShell生成ノードで作成したスクリプトを実行する設定(exec)となっています。

項目名 設定内容
実行コマンド exec: 対象ホスト上でPowerShellスクリプトを実行 を選択します。
コマンドを実行するホストID 【必須】 スクリプトを実行したい対象クライアント(PC)のホストIDを指定・選択します。ロボシュタインに登録されている固有のIDを入力してください。
ホスト上で実行するPowerShellスクリプト 前段のPowerShell生成ノードから引き渡されるスクリプトを指定するため、プルダウンから msg を選択し、右側のテキストボックスに ps と入力します。
実行結果の格納先 スクリプトの実行結果(戻り値やエラー情報)を格納するプロパティとして、プルダウンから msg を選択し、右側のテキストボックスに payload と入力します。
ログオンユーザのコンソール上で実行 クライアントPCにログオンしているユーザーの権限・コンソール画面のセクションでスクリプトを動かしたい場合は、チェックボックスを有効(オン)にします。

execコマンド実行時の留意事項

本フローで採用している exec(対象ホスト上でPowerShellスクリプトを実行)コマンドは、RSエージェントが動作するクライアントのOS環境による挙動の違い(32bit/64bit)や、実行タイムアウト時間(最大1分)などの制限・特性があります。

あらかじめ以下の専用ページから詳細な仕様をご確認ください。


実行結果の確認(デバッグ)

「実行(inject)」ボタンを押下後、正常にスクリプトの実行要求および判定処理が完了すると、結果に応じて画面右側のデバッグタブに異なるログが出力されます。

  • スクリプト実行にエラーが含まれる場合: エラー検出ログ 側に内容がすべて出力されます。
  • スクリプト実行が正常な場合: 正常完了ログ 側に内容が出力されます。

確認のポイント

判定が意図通りに動かない場合は、デバッグタブのログを展開し、msg.payload の中にどのような構造でデータが返ってきているか(error というキーが正しく存在しているか)を必ず確認してください。