PowerShell アクティビティ

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:5分
  • PowerShell は Windows .NET Framework をベースとして開発されたもので、Windows マシンとアプリケーションの管理のコントロールおよび自動化を目的としています。

    PowerShell は、これらのアクティビティを使用する任意の MID サーバーにインストールする必要があります。PowerShell を使用する MID サーバーは、サポートされる Windows オペレーティングシステムにインストールする必要があります。 ServiceNow は PowerShell 3.0 ~ 5.1 をサポートしています。

    ServiceNow オーケストレーションプラグインはこれらの基本的な PowerShell アクティビティをワークフローに追加します。PowerShell アクティビティパックのアクティビティの使用方法については、次を参照してください。 PowerShell アクティビティパック

    レガシーの [PowerShell の実行] アクティビティ

    [PowerShell の実行] アクティビティは、MID サーバーで Windows PowerShell コマンドを実行します。

    重要:
    このアクティビティは不使用になり、新しいワークフローでは使用できません。このアクティビティの機能を置き換えるには、PowerShell アクティビティテンプレートを使用してカスタムアクティビティを作成します。[PowerShell の実行] アクティビティを使用する以前のリリースからのワークフローは引き続き実行できます。

    結果の値

    ワークフローデザイナーは、アクティビティのスクリプトフィールド内から activity.result を使用して、結果値を割り当てることができます。デフォルトでは、使用される PowerShell コマンドの成功または失敗によって、[PowerShell の実行] アクティビティの結果の値が決まります。可能な結果値:
    • 成功
    • 失敗

    スクラッチパッドエントリー

    実行中のスクリプトによって stdout に書き込まれる情報は、activity.output 変数で取得され、アクティビティに返されます。この情報は、アクティビティのセンサースクリプトでの将来の処理のために解析、処理、または (たとえばスクラッチパッド変数に) 保存できます。

    たとえば、get-date コマンドを実行して、MID サーバーの現在時刻を取得します。このセンサースクリプトは受信した出力全体を保存しますが、時刻だけを返して保存するように処理できます。
    図 : 1. PowerShell アクティビティ
    PowerShell アクティビティ
    注:
    これは非常に単純化した例です。ほとんどの場合、スクリプトは数台のリモート Windows コンピューターに対して操作を実行します。しかし原則は同じです。stdout に書き込まれた内容はすべて activity.output で返され、処理できます。

    入力変数

    表 : 1. 入力変数
    フィールド 説明
    ホスト名 ターゲット Windows マシンの IP アドレス。この値は、コマンドで使用するために $computer 変数にマップされます ([コマンド] フィールドの例を参照)。ServiceNow 認証情報テーブル内の情報に基づく PowerShell 認証情報 $cred は、[ホスト名] で指定されるコンピューターで認証されます。
    コマンド 実行する PowerShell コマンドを入力します。たとえば、[ホスト名] 変数で指定されたリモート マシンに対して単純な WMI クエリーを実行する場合、コマンドは次のようになります。
    get-wmiobject <class> -computer $computer -credential $cred

    コンピューターで認証情報が認証されていない場合、コマンドは MID サーバーユーザーのコンテキストで実行されます。

    コマンドとスクリプトファイルの両方を実行することはできません。コマンドを指定すると、[スクリプトファイル] 変数が非表示になります。

    センサースクリプト プローブの結果を使用して実行するスクリプト。プローブからの出力は、output という名前の変数に含まれます。プローブからのエラーは、error という名前の変数に含まれます。
    スクリプトファイル - のスクリプトファイルの同期を有効にする Windows セキュリティの強化. スクリプトファイルとコマンドの両方を実行することはできません。スクリプトファイルを選択すると、[コマンド] 変数が非表示になります。
    PowerShell スクリプト変数 指定されたスクリプトファイルで使用される JSON 形式の追加パラメーター。

    状況

    アクティビティ状況は、ワークフロー エンジンがアクティビティを処理する方法を指示します。
    表 : 2. 状況
    状態 説明
    実行中 ワークフロー エンジンは、アクティビティの onExecute 機能を起動させることができます。
    完了 アクティビティの実行が終了しました。アクティビティの結果については結果値を確認してください。
    キャンセル このアクティビティ、またはこのアクティビティを含むワークフローがキャンセルされました。
    通常のワークフロー変数構文を使用して、コマンド ラインのワークフロー変数を追加します。上記の例では、<class> がワークフロー入力変数 myclass にあった場合、コマンドは次のようになります。
    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 コード

    PowerShell スクリプトでエラーが発生すると、Windows マシンはエラーメッセージの一部として HResult コードを返します。

    PowerShell アクティビティは、このコードを読み取り、解釈できます。すべての PowerShell エラーに HResult コードが含まれているわけではありません。PowerShell スクリプトに失敗した場合は、HResult コードを使用して、特定の条件に沿ってワークフローを移動できます。

    たとえば、Active Directory パスワードを最小長や複雑さなどのポリシー要件を満たしていないパスワードへリセットすると、PowerShell スクリプトは HResult コード -2146022651 を返します。このコードを使用するには、[条件] 値が activity.hresult = -2146022651 であるアクティビティ条件を作成します。アクティビティの実行時に PowerShell スクリプトがこのコードを返すと、ワークフローはこの新しい条件に移行します。