macOS デバイスで Intune のシェル スクリプトを使用する

シェル スクリプトを使用して、macOS オペレーティング システムでサポートされている機能を超えて Intune のデバイス管理機能を拡張します。

注:

Apple シリコンを搭載した Mac で x64 (Intel) バージョンのアプリを実行するには、Rosetta 2 が必要です。 Apple Silicon Mac に Rosetta 2 を自動的にインストールするには、Intune にシェル スクリプトを展開します。 サンプル スクリプトを表示するには、「 Rosetta 2 インストール スクリプト」を参照してください。

前提条件

シェル スクリプトを作成して macOS デバイスに割り当てるときは、次の前提条件が満たされていることを確認します。

  • デバイスは macOS 12.0 以降を実行します。
  • Intune がデバイスを管理します。
  • デバイスはインターネットに直接接続します。 Intune では、プロキシ経由の接続はサポートされていません。
  • シェル スクリプトは #! で始まり、 #!/bin/sh や #!/usr/bin/env zsh などの有効な場所にあります。
  • 該当するシェルのコマンドライン インタープリタがインストールされます。

シェル スクリプトを使用する前の重要な考慮事項

  • シェル スクリプトを使用するには、Microsoft Intune 管理エージェントが macOS デバイスに正しくインストールされている必要があります。 詳細については、「macOS 用の Microsoft Intune 管理エージェント」を参照してください。
  • シェル スクリプトは、デバイス上で個別のプロセスとして並列で実行されます。
  • サインインしたユーザーとして実行されるシェル スクリプトは、実行時にデバイス上で現在サインインしているすべてのユーザー アカウントに対して実行されます。
  • エンド ユーザーは、サインイン ユーザーとして実行されているスクリプトを実行するためにデバイスにサインインする必要があります。
  • 標準ユーザー アカウントでは実行できない変更をスクリプトで行う必要がある場合は、ルート ユーザー特権が必要です。
  • シェル スクリプトは、ディスクがいっぱいの場合、保存場所が改ざんされている場合、ローカル キャッシュが削除された場合、Mac デバイスが再起動した場合など、特定の条件下で、選択したスクリプトの頻度よりも高い頻度で実行しようとします。
  • 60 分以上実行されているシェル スクリプトは停止され、失敗として報告 されます。

シェル スクリプト ポリシーを作成して割り当てる

  1. Microsoft Intune 管理センターにサインインします。

  2. [デバイス]>プラットフォーム別>macOS>デバイスの管理>スクリプト>追加] を選択します。

  3. [基本] で、次のプロパティを入力し、[次へ] を選択します。

    • 名前: シェル スクリプトの名前を入力します。
    • 説明: シェル スクリプトの説明を入力します。 このオプション設定をお勧めします。
  4. [スクリプト設定] で、次のプロパティを入力し、[次へ] を選択します。

    • スクリプトのアップロード: シェル スクリプトを参照します。 スクリプト ファイルのサイズは 1 MB 未満にする必要があります。
    • サインインしたユーザーとしてスクリプトを実行する: デバイス上のユーザーの資格情報を使用してスクリプトを実行するには、[ はい ] を選択します。 [ いいえ ] (既定) を選択して、ルート ユーザーとしてスクリプトを実行します。
    • デバイスでスクリプト通知を非表示 にする:既定では、スクリプトが実行されるたびにスクリプト通知が表示されます。 エンド ユーザーには、macOS デバイスで Intune からの IT 管理者によるコンピューター の通知が構成されていることが表示されます。
    • スクリプトの頻度: スクリプトを実行する頻度を選択します。 スクリプトを 1 回だけ実行するには、[ 未構成 (既定)] を選択します。 頻度が設定されたスクリプトは、デバイスの再起動後にも実行されます。
    • スクリプトが失敗した場合の再試行の最大回数: 0 以外の終了コード (0 は成功を意味します) が返された場合にスクリプトを実行する回数を選択します。 スクリプトが失敗した場合に再試行しない場合は、[ 未構成 (既定)] を選択します。
  5. [ スコープ タグ] で、必要に応じてスクリプトのスコープ タグを追加し、[ 次へ] を選択します。 スコープ タグを使用して、Intune でスクリプトを表示できるユーザーを決定します。 詳細については、「 分散型 IT に対する役割ベースのアクセス制御とスコープ タグの使用」を参照してください。

  6. [割り当て]>[含めるグループを選択] の順に選択します。 Microsoft Entra グループの既存の一覧が表示されます。 スクリプトを受け取る 1 つ以上のユーザーまたはデバイス グループを選択します。 [選択] を選択します。 選択したグループが一覧に表示されます。 彼らはスクリプト ポリシーを受け取ります。

    注:

    ユーザグループに割り当てられたシェルスクリプトは、Macにサインインするすべてのユーザに適用されます。 シェル スクリプトの割り当てを更新すると、 macOS 用 Microsoft Intune MDM エージェントの割り当ても更新されます。

  7. [確認 + 追加] で、構成した設定の概要が表示されます。 [追加] を選択してスクリプトを保存します。 [ 追加] を選択すると、選択したグループにスクリプト ポリシーが展開されます。

作成したスクリプトがスクリプトの一覧に表示されます。 必要に応じて、macOS シェル スクリプトを Intune にアップロードした後に、その内容を表示できます。

シェル スクリプト ポリシーの監視

次のいずれかのレポートを選択して、ユーザーとデバイスに割り当てられているすべてのスクリプトの実行状態を監視できます。

  • スクリプト>監視するスクリプトを選択します>デバイスの状態
  • スクリプト>監視するスクリプトを選択します>ユーザーの状態

重要

選択した スクリプトの頻度に関係なく、スクリプト実行の状態は、前回のレポートから状態が変化した場合にのみ報告されます。 たとえば、スクリプトが 1 つの実行で 成功 を報告し、次の実行で 失敗 を報告した場合、Intune は状態と最後に更新されたタイムスタンプの両方を現在の実行情報で更新します。 同期間でスクリプトの状態が変化しない場合、Intune では初回実行から 7 日ごとに最後に更新されたタイムスタンプが更新されます。

スクリプトを実行すると、次のいずれかのステータスが返されます。

  • スクリプト実行の状態が [失敗] の場合は、スクリプトが 0 以外の終了コードを返したか、スクリプトの形式が正しくないことを示します。
  • スクリプト実行の状態が [成功 ] の場合は、スクリプトが終了コードとして 0 を返したことを示します。

ログ収集を使用した macOS シェル スクリプト ポリシーのトラブルシューティング

デバイス ログを収集すると、macOS デバイスでのスクリプトの問題のトラブルシューティングに役立てることができます。

ログ収集の要件

macOS デバイスでログを収集するには、次の情報を指定する必要があります。

  • 絶対ログ ファイルの完全なパス。
  • ファイル パスはセミコロン (;) のみで区切られます。
  • ログ コレクションの最大サイズは 60 MB (圧縮) または 25 ファイルのいずれか早い方です。
  • ログ収集に使用できるファイルの種類には 、.log、.zip、.gz、.tar、.txt、.xml、.crash、.rtf があります。

デバイス ログを収集する

  1. Microsoft Intune 管理センターにサインインします。

  2. [デバイス>デバイスの管理]>[スクリプトと修復]>プラットフォーム スクリプトの順に移動し、macOS シェル スクリプトを選択します。

  3. [デバイスの状態] または [ユーザー状態レポート] で、デバイスを選択します。

  4. [ ログの収集] を選択し、ログ ファイルのフォルダー パスをセミコロン (;) のみで区切って、パスの間にスペースや改行を入れずに入力します。

    たとえば、複数のパスを /Path/to/logfile1.zip;/Path/to/logfile2.logとして記述します。

    重要

    カンマ、ピリオド、改行、または引用符を使用して、スペースの有無にかかわらず複数のログ ファイル パスを区切ると、ログ収集エラーが発生します。 パス間の区切り文字としてスペースを使用しないでください。

  5. [OK] を選択します。 デバイス上の Intune 管理エージェントは、次回 Intune でチェックインするときにログを収集します。 このチェックインは通常 8 時間ごとに行われます。

    注:

    • デバイスは、収集されたログを暗号化して送信し、Microsoft Azure Storage に 30 日間保存します。 Microsoft Intune 管理センターは、保存されているログをオンデマンドで復号化してダウンロードします。
    • 管理者が指定したログに加えて、Intune 管理エージェントは、 /Library/Logs/Microsoft/Intune と ~/Library/Logs/Microsoft/Intune のフォルダーからもログを収集します。 エージェント ログ ファイル名は IntuneMDMDaemon date--time.log と IntuneMDMAgent date--time.log です。
    • 管理者が指定したファイルが見つからない場合、または間違ったファイル拡張子を持つ場合は、次のファイル名が一覧表示されている LogCollectionInfo.txtを見つけます。

ログ収集エラー

次のいずれかの理由により、ログ収集が失敗する可能性があります。 これらのエラーを解決するには、修復手順を実行します。

エラー コード (16 進) エラー コード (12 進) エラー メッセージ 修復手順
0X87D300D1 2016214834 ログ ファイルのサイズは 60 MB を超えることはできません。 圧縮ログのサイズは 60 MB 未満であることを確認します。
0X87D300D1 2016214831 指定されたログ ファイルのパスが存在する必要があります。 システムのユーザー フォルダーは、ログ ファイルにとって無効な場所です。 指定されたファイル パスが有効でアクセス可能であることを確認します。
0X87D300D2 2016214830 アップロード URL の有効期限が切れているため、ログ収集ファイルのアップロードに失敗しました。 ログの収集アクションを再試行します。
0X87D300D3、0X87D300D5、0X87D300D7 2016214829, 2016214827, 2016214825 暗号化が失敗したため、ログ収集ファイルのアップロードに失敗しました。 ログのアップロードを再試行します。 ログの収集アクションを再試行します。
2016214828 ログ ファイルの数が、許可されている上限である 25 ファイルを超えました。 一度に収集できるログ ファイルは 25 個までです。
0X87D300D6 2016214826 zip エラーのため、ログ収集ファイルのアップロードに失敗しました。 ログのアップロードを再試行します。 ログの収集アクションを再試行します。
2016214740 圧縮されたログが見つからなかったため、ログを暗号化できませんでした。 ログの収集アクションを再試行します。
2016214739 ログは収集されましたが、格納できませんでした。 ログの収集アクションを再試行します。

macOS のカスタム属性

シェル スクリプトを使用して管理対象 macOS デバイスからカスタム プロパティを収集できるカスタム属性プロファイルを作成できます。

macOS デバイスのカスタム属性を作成して割り当てる

  1. Microsoft Intune 管理センターにサインインします。

  2. [デバイス>プラットフォーム別]>macOS>[デバイスの整理]>macOS>Add のカスタム属性の順に選択します。

  3. [基本] で、次のプロパティを入力し、[次へ] を選択します。

    • 名前: スクリプトの名前を入力します。
    • 説明: スクリプトの説明を入力します。 この設定は省略可能ですが、推奨されます。
  4. [ 属性の設定] で、次のプロパティを入力し、[ 次へ] を選択します。

    • 属性のデータ型: スクリプトが返す結果のデータ型を選択します。 指定可能な値は、 文字列、 整数、 Date です。
    • スクリプト: スクリプト ファイルを選択します。

    その他の詳細:

    • シェル スクリプトはレポートする属性をエコーする必要があり、出力のデータ型はカスタム属性プロファイルの属性のデータ型と一致する必要があります。
    • シェル スクリプトによって返される結果は 20 KB 以下である必要があります。

    注:

    Date型属性を使用する場合は、シェル スクリプトが ISO-8601 形式で日付を返すことを確認してください。 次の例を参照してください。

    ISO-8601 準拠の日付をタイム ゾーンで印刷するには:

    #!/bin/sh
    var=$(date +"%Y-%m-%dT%H:%M:%S%z")
    echo $var # Prints an ISO-8601 compliant date with time-zone
    

    ISO-8601 準拠の日付を UTC 時刻で印刷するには:

    #!/bin/sh
    var=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
    echo $var # Prints an ISO-8601 compliant date in UTC time
    
  5. [ 割り当て] で、 含めるグループを選択する を選択します。 [含めるグループの選択] を選択すると、Microsoft Entra グループの既存の一覧が表示されます。 スクリプトを受け取る 1 つ以上のユーザーまたはデバイス グループを選択します。 [選択] を選択します。 選択したグループが一覧に表示されます。 彼らはスクリプト ポリシーを受け取ります。

    または、[割り当て先] の横にあるドロップダウン ボックスでこれらのオプションのいずれかを選択して、[すべてのユーザー]、[すべてのデバイス]、または [すべてのユーザーとすべてのデバイス] を選択することもできます。

    注:

    ユーザグループに割り当てられたスクリプトは、Mac にサインインするすべてのユーザに適用されます。

  6. [確認 + 追加] で、構成した設定の概要が表示されます。 [追加] を選択してスクリプトを保存します。 [ 追加] を選択すると、選択したグループにスクリプト ポリシーが展開されます。

作成したスクリプトがカスタム属性のリストに表示されます。 Intune にアップロードした後、カスタム属性の内容を表示します。

カスタム属性ポリシーを監視する

次のいずれかのレポートを選択して、ユーザーとデバイスに割り当てられたすべてのカスタム属性プロファイルの実行状態を監視できます。

  • カスタム属性>監視するカスタム属性プロファイルを選択します>デバイスの状態
  • カスタム属性>監視するカスタム属性プロファイルを選択します>ユーザーの状態

重要

カスタム属性プロファイルで提供されるシェル スクリプトは、管理対象の Mac で 8 時間ごとに実行され、その状態が報告されます。

カスタム属性プロファイルを実行すると、次のいずれかのステータスが返されます。

  • [ 失敗 ] 状態は、スクリプトが 0 以外の終了コードを返したか、スクリプトの形式が正しくないことを示します。 エラーは [結果] 列に報告されます。
  • [ 成功 ] ステータスは、スクリプトが終了コードとして 0 を返したことを示します。 スクリプトによってエコーされた出力は、[ 結果] 列に報告されます。

よく寄せられる質問

割り当てられたシェル スクリプトがデバイスで実行されないのはなぜですか?

この問題には、いくつかの理由が考えられます。

  • エージェントは、新規または更新されたスクリプトを受け取るためにチェックインする必要がある場合があります。 このチェックイン プロセスは 8 時間ごとに行われ、MDM チェックインとは異なります。 エージェント チェックインが正常に完了するために、デバイスが起動状態であり、ネットワークに接続されていることを確認し、エージェントがチェックインするのを待ちます。 Mac でポータル サイトを開き、デバイスを選択して、[ 設定の確認] を選択するようにエンド ユーザーに依頼することもできます。
  • エージェントがインストールされていない可能性があります。 エージェントが macOS デバイスに /Library/Intune/Microsoft Intune Agent.app でインストールされていることを確認します。
  • エージェントが正常な状態でない可能性があります。 エージェントは 24 時間回復を試み、シェル スクリプトがまだ割り当てられている場合は自動的に削除して再インストールします。

スクリプト実行状態はどのくらいの頻度で報告されますか?

スクリプトの実行状態は、スクリプトの実行が完了するとすぐに Microsoft Intune 管理センターに報告されます。 スクリプトが設定された頻度で定期的に実行されるようにスケジュールされている場合、スクリプトは最初に実行されたときのステータスのみを報告します。

シェルスクリプトはいつ再び実行されますか?

スクリプトから 0 以外の終了コードが返されると、Intune は [ スクリプトが失敗した場合に再試行する最大回数 ] 設定に従って再試行します。 この設定が [未構成] の場合、Intune は失敗した実行を再試行せず、その状態を失敗として報告します。 頻度が設定されたスクリプトは、スケジュールどおりに、またはデバイスの再起動後に再実行することもできます。

シェル スクリプトにはどのような Intune ロールのアクセス許可が必要ですか?

割り当てられた Intune ロールには、シェル スクリプトを削除、割り当て、作成、更新、または読み取りするためのデバイス構成アクセス許可が必要です。

既知の問題

  • スクリプト実行状態がありません: デバイスがスクリプトを受信したが、実行状態を報告する前にオフラインになった場合、デバイスは管理センターでスクリプトの実行状態を報告しません。

追加情報

macOS デバイスのシェル スクリプトまたはカスタム属性を Microsoft Intune から展開する場合は、Apple Silicon Mac マシンでネイティブに実行される新しいユニバーサル バージョンの Intune 管理エージェント アプリを展開します。 同じ展開で、Intel Mac マシンに x64 バージョンのアプリがインストールされます。

Apple Silicon Mac で x64 (Intel) バージョンのアプリを実行するには、Rosetta 2 が必要です。 Apple Silicon Mac に Rosetta 2 を自動的にインストールするには、Intune にシェル スクリプトを展開します。 サンプル スクリプトを表示するには、「 Rosetta 2 インストール スクリプト」を参照してください。

次の手順