> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Scripts の概要

> Iru Endpoint を使用して、管理対象の Mac および Windows コンピュータにカスタムスクリプトを展開します。登録時またはスケジュールに従ってシェル、Python、PowerShell、バッチスクリプトを実行します。

<Callout icon="list-check" color="#B84A7A" iconType="regular">Custom Scripts は Mac コンピュータと Windows コンピュータで利用できます</Callout>

### Custom Script とは

Iru Endpoint のカスタムスクリプトは、管理対象デバイスでタスクを自動化し、設定を構成します。Iru Agent を使用して登録済みデバイスに展開および実行できる一連の指示と考えてください。カスタムスクリプトを使用すると、デバイス設定の構成、ソフトウェアアプリケーションのインストールや更新、メンテナンスタスクの実行、セキュリティポリシーの適用を行えます。また、ハードウェアインベントリやシステムログなどのデバイス情報を収集するためにカスタムスクリプトを使用することもできます。事前に構築され定期的にメンテナンスされているスクリプトのコレクションが、[GitHub リポジトリ](https://github.com/kandji-inc/support/tree/main/Scripts)で入手できます。

<Tabs>
  <Tab title="Mac">
    <Note>
      Iru Endpoint の Custom Script Library Item は、さまざまな言語のスクリプトを展開できます。ただし、サポートチームが最も的確にトラブルシューティングを支援できるのは、shell、bash、zshell、または Python で書かれたスクリプトです。サポートされている言語のいずれかから呼び出される場合は、AppleScript についても支援できます。
    </Note>

    ### Custom Scripts の仕組み

    Iru Agent は、登録済みの Mac コンピュータでカスタムスクリプトを実行します。カスタムスクリプトでは、Mac コンピュータ上の任意のシェルまたはインタープリタを指定できます。シェルまたはインタープリタが指定されていない場合は、デフォルトのシェル（/bin/sh）が使用されます。カスタムスクリプトは常に root ユーザーとして実行されます。

    #### 実行頻度

    展開するスクリプトに応じて、チェックインごとに実行するか、1 日に 1 回実行するか、Self Service からオンデマンドで実行するかを指定できます。

    <AccordionGroup>
      <Accordion title="デバイスごとに1回インストール">
        **デバイスごとに1回インストール** の場合、Iru はそのデバイスで Library Item が **Pass** になるまで、チェックインごとに監査スクリプトを再実行します。修復スクリプトが有効で成功した場合、Library Item は **修復済み** と表示されることがありますが、Iru は **Pass** になるまで後続のチェックインで監査スクリプトを再実行します。
      </Accordion>

      <Accordion title="Run every 15 min">
        スクリプトはチェックインごと（約 15 分ごと）に実行されます。
      </Accordion>

      <Accordion title="Run daily">
        スクリプトは前回の実行時刻に基づいて 24 時間ごとに実行されます。
      </Accordion>

      <Accordion title="Self Serviceからオンデマンドで実行">
        スクリプトは自動的に実行されることはなく、Self Service からオプションの項目としてのみ提供されます。項目の実行後、**Run** ボタンは **Run again** に変わります。
      </Accordion>
    </AccordionGroup>

    <Callout icon="lightbulb" color="#2563EB" iconType="regular">
      上記の最初の 3 つのシナリオでも、Custom Script Library Item を Self Service で提供できます。
    </Callout>

    #### 終了コードと出力

    <AccordionGroup>
      <Accordion title="終了コードの結果">
        監査スクリプトがコード **0** で終了した場合、その実行は **Pass** ステータスになります。監査スクリプトが 0 以外の終了コードで終了した場合、その実行は **エラー** ステータスになります。実行が **エラー** ステータスになると、Iru はアラートを生成します。詳細については、[グローバルアラート](/ja/endpoint/devices/global-alerts)のサポート記事を参照してください。
      </Accordion>

      <Accordion title="スクリプト出力のログ記録">
        Stdout と Stderr はスクリプトの監査情報に記録され、デバイスのステータスページまたはカスタムスクリプトのステータスページで確認できます。
      </Accordion>
    </AccordionGroup>

    #### 修復

    修復スクリプトを使用すると、メインの **監査スクリプト** を、システム設定やアプリケーションの状態を確認するための真の監査スクリプトとして使用できます。監査スクリプトが 0 以外の終了コードで終了した場合、その実行は **エラー** ステータスになり、Iru は修復スクリプトを実行します。

    <Check>
      修復スクリプトがコード **0** で終了した場合、そのデバイスの Library Item ステータスは **修復済み** になります。修復スクリプトが 0 以外の終了コードで終了した場合、そのデバイスの Library Item ステータスは **エラー** になり、Iru はアラートを生成します。詳細については、[グローバルアラート](/ja/endpoint/devices/global-alerts)のサポート記事を参照してください。
    </Check>

    #### 再起動オプション

    再起動オプションを使用すると、スクリプトの実行が成功した後に強制的に再起動できます。このオプションを選択すると、ユーザーは Iru Agent メニューバーアプリケーションから再起動タイマーを受け取ります。このタイマーは、項目が Self Service から開始された場合は 5 分、チェックイン時など別の方法で開始された場合は 30 分の再起動タイマーになります。

    <Tip>
      再起動オプションの動作は、修復スクリプトの使用有無によって異なります。

      * [**Remediation** スクリプト](#remediation)を使用している場合、**Remediation** スクリプトが 0 で終了すると、再起動のカウントダウンがトリガーされます。
      * **Remediation** スクリプトを使用*していない*場合、**Audit** スクリプトが 0 で終了すると、再起動のカウントダウンがトリガーされます。
    </Tip>

    #### Liftoff 設定

    Custom Script の下部で **Liftoff設定** を展開します。そこに **このLibrary Itemを処理** があります。この設定は、[Iru Liftoff](/ja/endpoint/library/library-items-profiles/configure-the-liftoff-library-item) を基準としてスクリプトをインストールするタイミングを選択します。Automated Device Enrollment と手動登録に適用されます。

    * **During Liftoff**（デフォルト）: Custom Script は Liftoff 中に処理され、完了するまで Liftoff は完了しません。**Liftoffで非表示** が選択されていない限り、Install 画面に表示されます。
      * **Liftoffで非表示**: 選択すると、この Library Item は Liftoff 中に処理されますが、Install 画面には表示されません。処理中、Liftoff は画面下部に **続行する前に、必要な追加構成を処理しています…** と表示します。この設定は順序には影響しません。
      * **Friendly name**（オプション）: 指定すると、Liftoff は Library Item の **名前** の代わりにこの名前を表示します。Iru Agent はチェックイン中、引き続き **名前** の順に Library Item を並べます。
    * **Liftoff後**: Custom Script は Liftoff 中に処理されず、Install 画面にも表示されません。後のエージェントのチェックイン時にインストールされます。

    <Note>
      この Custom Script が [Automated Device Enrollment Library Item](/ja/endpoint/enrollment/apple/configuring-apple-enrollment#install-library-items-during-setup-assistant) の **設定アシスタント中にLibrary Itemsをインストール** にも含まれている場合、設定アシスタント中にもインストールされます。**このLibrary Itemを処理** はそのインストールを変更しません。
    </Note>

    ### Custom Script Library Item を追加する

    この Library Item を Iru Endpoint の Library に追加するには、[Library の概要](/ja/endpoint/library/library-items-profiles/library-overview)の記事に記載されている手順に従ってください。

    <Steps>
      <Step title="Library Item に名前を付ける">
        新しい Custom Script Library Item に **名前** を付けます。
      </Step>

      <Step title="Blueprint に割り当てる">
        目的の [Blueprints](/ja/endpoint/getting-started/blueprints-and-library/configuring-blueprints) に割り当てます。
      </Step>

      <Step title="実行頻度を選択する">
        **実行頻度** を選択します。
      </Step>

      <Step title="Self Service を設定する（オプション）">
        必要に応じて、スクリプトを **Self Service** で利用できるようにします。
      </Step>

      <Step title="監査スクリプトを追加する">
        スクリプトを **監査スクリプト** フィールドに貼り付けます。
      </Step>

      <Step title="修復スクリプトを追加する（オプション）">
        必要に応じて、**Remediation Script** を設定して貼り付けます。
      </Step>

      <Step title="再起動オプションを設定する（オプション）">
        必要に応じて、**実行成功後に再起動** チェックボックスをオンにします。
      </Step>

      <Step title="Liftoff 設定を構成する（オプション）">
        **Liftoff設定** を展開します。**このLibrary Itemを処理** のデフォルトは **During Liftoff** です。Liftoff の完了後にスクリプトをインストールするには、**Liftoff後** を選択します。[Liftoff 設定](#liftoff-settings)を参照してください。
      </Step>

      <Step title="設定を保存する">
        **保存** を選択します。
      </Step>
    </Steps>

    ### 関連記事

    <CardGroup cols={2}>
      <Card title="Library の概要" icon="books" href="/ja/endpoint/library/library-items-profiles/library-overview">
        Library Item を選別、作成、管理し、Blueprint に追加します
      </Card>

      <Card title="Blueprint の設定" icon="cog" href="/ja/endpoint/getting-started/blueprints-and-library/configuring-blueprints">
        ポリシー管理のためにデバイスの Blueprint を作成して設定します
      </Card>

      <Card title="カスタムスクリプトを使用した Homebrew の展開" icon="apple" href="/ja/endpoint/library/deployment-guides/apple/deploy-homebrew-using-a-custom-script">
        カスタムスクリプトを使用して Mac コンピュータに Homebrew を展開します
      </Card>

      <Card title="グローバル変数" icon="code" href="/ja/endpoint/library/library-items-profiles/global-variables">
        Iru Endpoint でグローバル変数を使用して、デバイスとユーザーの情報をプロファイル、スクリプト、構成設定に動的に挿入する方法を説明します。
      </Card>

      <Card title="グローバルアラート" icon="bell" href="/ja/endpoint/devices/global-alerts">
        Custom Scripts やその他の Library Item が問題を報告した際に Iru Endpoint がアラートを表示する方法を設定します
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Windows">
    ### Windows Custom Script

    **Windows custom script** Library Item を使用すると、管理対象の Windows コンピュータで PowerShell スクリプトを実行できます。この項目を使用して、デバイスの状態の監査、修復による設定の適用、または組み込みの Windows プロファイルでカバーされていない管理タスクの実行を行えます。

    Windows カスタムスクリプトは監査と修復のモデルをサポートしており、非準拠の状態を検出して自動的に修正できます。

    ### Windows Custom Scripts Library Item を作成する

    <Steps>
      <Step title="Library に移動する">
        **Library** に移動します。
      </Step>

      <Step title="Library Item を追加する">
        **Library Item を追加** を選択します。
      </Step>

      <Step title="Windows Custom Script を選択する">
        **Windows Custom Script** を検索して選択します。
      </Step>

      <Step title="名前を入力する">
        わかりやすい **名前** を入力します。
      </Step>

      <Step title="ステータスを確認する">
        ステータスが **有効** に設定されていることを確認します。
      </Step>

      <Step title="Blueprint に割り当てる">
        Library Item を 1 つ以上の **Blueprints** に割り当てます。
      </Step>
    </Steps>

    ### スクリプトの詳細

    **Script details** セクションでは、監査スクリプトと修復スクリプトの設定を定義します。

    #### 監査スクリプト

    **Audit script** は、デバイスが望ましい状態にあるかどうかを判断します。

    監査スクリプトは、次のいずれかの方法で指定できます。

    * **署名済みスクリプトをアップロード**
      * 署名済みの PowerShell `.ps1` ファイルをアップロードします。
    * **スクリプトを手動で入力**
      * PowerShell コードをエディタに直接貼り付けるか編集します。

    <Note>
      デバイスが準拠していない場合、監査スクリプトは 0 以外の終了コードで終了する必要があります。終了コード 0 は準拠を示します。
    </Note>

    #### コマンドラインパラメータ（オプション）

    **Command line parameters** フィールドを使用すると、実行時に監査スクリプトと修復スクリプトに引数を渡すことができます。

    * 標準的な PowerShell のパラメータ構文を使用します。
    * パラメータはスクリプトの実行時に付加されます。

    例: `-Mode Full -ConfigPath "C:\Config.json"`

    <Tip>
      これは、値をハードコーディングせずにスクリプトを再利用可能にするのに便利です。
    </Tip>

    #### 修復スクリプト（オプション）

    修復アクションを設定するには、**Add remediation script** を選択します。

    * 修復スクリプトは、監査スクリプトが非準拠を報告した場合にのみ実行されます。
    * 署名済みスクリプトをアップロードするか、修復ロジックを手動で入力できます。
    * 修復スクリプトを使用して、設定のずれを修正したり、設定を適用したりします。

    <Note>
      修復スクリプトは、問題が解決された後に正常に終了する必要があります。
    </Note>

    #### 実行環境

    **Execute in** を使用して、スクリプトの実行に使用する PowerShell 環境を選択します。

    * **64 ビット**
    * **32 ビット**

    **64 bit** は標準の 64 ビット PowerShell 環境でスクリプトを実行し、ほとんどの Windows コンピュータで推奨されます。

    <Note>
      スクリプトまたはその依存関係で WOW64 の互換性が必要な場合にのみ 32 bit を使用してください。
    </Note>

    ### 割り当てと実行

    Library Item を保存した後:

    1. **保存** を選択します。
    2. **+ Assign** を使用して 1 つ以上の **Blueprints** に割り当てます。

    スクリプトはデバイスごとに 1 回実行されます。

    ### ベストプラクティス

    * 可能な限り、アップロードする前に PowerShell スクリプトに署名してください。
    * 検出ロジック（監査）と適用ロジック（修復）を分離してください。
    * 広く展開する前に、非本番デバイスでスクリプトをテストしてください。

    ### 関連記事

    <CardGroup cols={2}>
      <Card title="Microsoft PowerShell ドキュメント" icon="book" href="https://learn.microsoft.com/powershell/">
        Microsoft による公式 PowerShell ドキュメント
      </Card>

      <Card title="例外について知りたかったことのすべて（PowerShell）" icon="book" href="https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-exceptions">
        PowerShell の例外処理
      </Card>

      <Card title="グローバルアラート" icon="bell" href="/ja/endpoint/devices/global-alerts">
        Windows Custom Scripts やその他の Library Item が問題を報告した際に Iru Endpoint がアラートを表示する方法を設定します
      </Card>
    </CardGroup>
  </Tab>
</Tabs>
