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

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

注:

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

前提条件

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

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

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

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

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

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

  2. [デバイス>] [macOS>シェル スクリプト][追加] の順に選択します。>

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

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

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

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

    注:

    • ユーザー グループに割り当てられたシェル スクリプトは、Mac にログインするすべてのユーザーに適用されます。
    • シェル スクリプトの割り当てを更新すると、Microsoft Intune MDM Agent for macOS の割り当ても更新されます。
  7. [確認 + 追加] で、構成した設定の概要が表示されます。 [追加] を選択してスクリプトを保存します。 [ 追加] を選択すると、スクリプト ポリシーが選択したグループに展開されます。

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

シェル スクリプト ポリシーを監視する

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

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

重要

選択した [スクリプトの頻度] に関係なく、スクリプトの実行状態は、スクリプトが初めて実行されたときにのみ報告されます。 スクリプトの実行状態は、後続の実行では更新されません。 ただし、更新されたスクリプトは新しいスクリプトとして扱われ、実行状態が再度報告されます。

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

  • [ 失敗] のスクリプト実行状態は、スクリプトから 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 時間ごとに発生します。

    注:

    • 収集されたログは、デバイス上で暗号化され、30 日間 Microsoft Azure ストレージに送信および保存されます。 保存されたログはオンデマンドで復号化され、管理センター Microsoft Intune使用してダウンロードされます。
    • 管理者が指定したログに加えて、Intune 管理エージェント のログも、 と ~/Library/Logs/Microsoft/Intuneのフォルダー/Library/Logs/Microsoft/Intuneから収集されます。 エージェント ログ ファイル名は IntuneMDMDaemon date--time.logIntuneMDMAgent 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>] [カスタム属性][追加] の順に選択します。>

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

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

    • 属性のデータ型: スクリプトから返される結果のデータ型を選択します。 使用可能な値は 、StringInteger、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 を返したことを示します。 スクリプトによってエコーされた出力は、 Result 列に報告されます。

よく寄せられる質問

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

いくつかの理由が考えられます。

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

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

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

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

[スクリプトが 失敗した場合に再試行する最大回数 ] 設定が構成され、実行時にスクリプトが失敗した場合にのみ、スクリプトが再度実行されます。 スクリプトが 失敗した場合に再試行する最大回数 が構成されておらず、スクリプトの実行時に失敗した場合、スクリプトは再実行されず、実行状態は 失敗として報告されます。

シェル スクリプトに必要な Intune ロールのアクセス許可

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

既知の問題

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

追加情報

Microsoft Intuneから macOS デバイスのシェル スクリプトまたはカスタム属性を展開すると、Apple シリコン Mac マシンでネイティブに実行される新しいユニバーサル バージョンの Intune 管理エージェント アプリがデプロイされます。 同じ展開で、Intel Mac コンピューターには x64 バージョンのアプリがインストールされます。 Apple シリコンを搭載した Mac で x64 (Intel) バージョンのアプリを実行するには、Rosetta 2 が必要です。 Apple シリコン Mac に Rosetta 2 を自動的にインストールするには、Intune にシェル スクリプトをデプロイします。 サンプル スクリプトを表示するには、「 Rosetta 2 Installation Script」を参照してください。

次の手順