Intuneの macOS デバイスでシェル スクリプトを使用する
シェル スクリプトを使用して、macOS オペレーティング システムでサポートされている機能を超えて、Intuneのデバイス管理機能を拡張します。
注:
Apple シリコンを搭載した Mac で x64 (Intel) バージョンのアプリを実行するには、Rosetta 2 が必要です。 Apple シリコン Mac に Rosetta 2 を自動的にインストールするには、Intuneにシェル スクリプトをデプロイします。 サンプル スクリプトを表示するには、「 Rosetta 2 Installation Script」を参照してください。
前提条件
シェル スクリプトを作成し、macOS デバイスに割り当てるときに、次の前提条件が満たされていることを確認します。
- デバイスは macOS 12.0 以降を実行しています。
- デバイスは、Intuneによって管理されます。
- デバイスはインターネットに直接接続されます。 プロキシ経由の接続はサポートされていません。
- シェル スクリプトは
#!
で始まり、#!/bin/sh
や#!/usr/bin/env zsh
などの有効な場所にある必要があります。 - 該当するシェルのコマンド ライン インタープリターがインストールされます。
シェル スクリプトを使用する前の重要な考慮事項
- シェル スクリプトでは、Microsoft Intune管理エージェントが macOS デバイスに正常にインストールされている必要があります。 詳細については、「macOS 用の Microsoft Intune 管理エージェント」を参照してください。
- シェル スクリプトは、デバイス上で個別のプロセスとして並列で実行されます。
- サインインユーザーとして実行されるシェル スクリプトは、実行時にデバイス上の現在サインインしているすべてのユーザー アカウントに対して実行されます。
- エンド ユーザーは、サインインしているユーザーとして実行されているスクリプトを実行するために、デバイスにサインインする必要があります。
- スクリプトで標準ユーザー アカウントで行うことができない変更を行う必要がある場合は、ルート ユーザー特権が必要です。
- シェル スクリプトは、ディスクがいっぱいの場合、ストレージの場所が改ざんされた場合、ローカル キャッシュが削除された場合、Mac デバイスが再起動された場合など、特定の条件で選択したスクリプトの頻度よりも頻繁に実行しようとします。
- 60 分を超える間実行されているシェル スクリプトは停止され、"failed" と報告されます。
シェル スクリプト ポリシーを作成して割り当てる
Microsoft Intune 管理センターにサインインします。
[デバイス>By platform>macOS>Manage devices>Scripts>Add] を選択します。
[基本] で、次のプロパティを入力し、[次へ] を選択します。
- [名前]: シェル スクリプトの名前を入力します。
- 説明: シェル スクリプトの説明を入力します。 この設定は省略可能ですが、推奨されます。
[スクリプト設定] で、次のプロパティを入力し、[次へ] を選択します。
- [スクリプトのアップロード]: シェル スクリプトを参照します。 スクリプト ファイルのサイズは 1 MB 未満にする必要があります。
- サインインしているユーザーとしてスクリプトを実行する: [ はい ] を選択して、デバイスでユーザーの資格情報を使用してスクリプトを実行します。 [ いいえ ] (既定値) を選択して、スクリプトをルート ユーザーとして実行します。
- デバイスでスクリプト通知を非表示にする: 既定では、実行されるスクリプトごとにスクリプト通知が表示されます。 エンド ユーザーには、macOS デバイス上のIntuneからコンピューター通知を構成している IT が表示されます。
- スクリプトの頻度: スクリプトを実行する頻度を選択します。 スクリプトを 1 回だけ実行するには、[ 未構成 ] (既定値) を選択します。 頻度が設定されたスクリプトも、デバイスの再起動後に実行されます。
- スクリプトが失敗した場合に再試行する最大回数: スクリプトが 0 以外の終了コード (成功を意味するゼロ) を返す場合に実行する回数を選択します。 スクリプトが失敗したときに再試行しない場合は、[ 未構成 ] (既定値) を選択します。
[ スコープ タグ] で、必要に応じてスクリプトのスコープ タグを追加し、[ 次へ] を選択します。 スコープ タグを使用して、Intuneでスクリプトを表示できるユーザーを決定できます。 スコープ タグの詳細については、「 分散型 IT にロールベースのアクセス制御とスコープ タグを使用する」を参照してください。
[割り当て]>[含めるグループを選択] の順に選択します。 Microsoft Entra グループの既存の一覧が表示されます。 スクリプトを受け取る 1 つ以上のユーザーまたはデバイス グループを選択します。 [選択] を選択します。 選択したグループが一覧に表示され、スクリプト ポリシーが表示されます。
注:
- ユーザー グループに割り当てられたシェル スクリプトは、Mac にログインするすべてのユーザーに適用されます。
- シェル スクリプトの割り当てを更新すると、Microsoft Intune MDM Agent for macOS の割り当ても更新されます。
[確認 + 追加] で、構成した設定の概要が表示されます。 [追加] を選択してスクリプトを保存します。 [ 追加] を選択すると、スクリプト ポリシーが選択したグループに展開されます。
作成したスクリプトがスクリプトの一覧に表示されます。 必要に応じて、macOS シェル スクリプトの内容をIntuneにアップロードした後で表示できます。
シェル スクリプト ポリシーを監視する
次のいずれかのレポートを選択することで、ユーザーとデバイスに割り当てられたすべてのスクリプトの実行状態を監視できます。
- スクリプト>監視するスクリプトを選択します>デバイスの状態
- スクリプト>監視するスクリプトを選択します>ユーザーの状態
重要
選択した [スクリプトの頻度] に関係なく、スクリプトの実行状態は、スクリプトが初めて実行されたときにのみ報告されます。 スクリプトの実行状態は、後続の実行では更新されません。 ただし、更新されたスクリプトは新しいスクリプトとして扱われ、実行状態が再度報告されます。
スクリプトを実行すると、次のいずれかの状態が返されます。
- [ 失敗] のスクリプト実行状態は、スクリプトから 0 以外の終了コードが返されたか、スクリプトの形式が正しくないことを示します。
- [ 成功 ] のスクリプト実行状態は、スクリプトが終了コードとして 0 を返したことを示しました。
ログ収集を使用した macOS シェル スクリプト ポリシーのトラブルシューティング
macOS デバイスでのスクリプトの問題のトラブルシューティングに役立つデバイス ログを収集できます。
ログ収集の要件
macOS デバイスでログを収集するには、次の項目が必要です。
- 完全な絶対ログ ファイル パスを指定する必要があります。
- ファイル パスはセミコロン (;)のみを使用して区切る必要があります。
- アップロードするログ収集の最大サイズは、60 MB (圧縮) または 25 個のファイルのいずれか、いずれか最初に発生します。
- ログ収集に許可されるファイルの種類には、.log、.zip、.gz、.tar、.txt、.xml、.crash、.rtfなどの拡張子があります。
デバイス ログを収集する
Microsoft Intune 管理センターにサインインします。
[デバイス>管理デバイス>スクリプトと修復>Platform スクリプトに移動し、macOS シェル スクリプトを選択します。
[ デバイスの状態] または [ ユーザーの状態 レポート] で、デバイスを選択します。
[ ログの収集] を選択し、ログ ファイルのフォルダー パスをセミコロンのみで区切って指定します (パス間にスペースや改行がない;)。
たとえば、複数のパスを/Path/to/logfile1.zip;/Path/to/logfile2.log
として書き込む必要があります。重要
スペースの有無に関係なく、コンマ、ピリオド、改行、または引用符を使用して複数のログ ファイル パスを区切ると、ログ収集エラーが発生します。 スペースは、パス間の区切り文字としても使用できません。
[OK] を選択します。 デバイス上のIntune管理エージェントが次回Intuneでチェックインすると、ログが収集されます。 このチェックインは通常、8 時間ごとに発生します。
注:
- 収集されたログは、デバイス上で暗号化され、30 日間 Microsoft Azure ストレージに送信および保存されます。 保存されたログはオンデマンドで復号化され、管理センター 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 デバイスのカスタム属性を作成して割り当てる
Microsoft Intune 管理センターにサインインします。
[ デバイス>By platform>macOS>Organize devices>Custom attributes for macOS>Add を選択します。
[基本] で、次のプロパティを入力し、[次へ] を選択します。
- [名前]: スクリプトの名前を入力します。
- 説明: スクリプトの説明を入力します。 この設定は省略可能ですが、推奨されます。
[ 属性の設定] で、次のプロパティを入力し、[ 次へ] を選択します。
- 属性のデータ型: スクリプトから返される結果のデータ型を選択します。 使用可能な値は 、String、 Integer、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
[ 割り当て] で、[ 含めるグループの選択] をクリックします。 [グループの選択] を選択すると、グループの既存の一覧Microsoft Entra表示されます。 スクリプトを受け取る 1 つ以上のユーザーまたはデバイス グループを選択します。 [選択] を選択します。 選択したグループが一覧に表示され、スクリプト ポリシーが表示されます。 または、[割り当て先] の横にあるドロップダウン ボックスでこれらのオプションのいずれかを選択して、[すべてのユーザー]、[すべてのデバイス]、または [すべてのユーザーとすべてのデバイス] を選択することもできます。
注:
- ユーザー グループに割り当てられたスクリプトは、Mac にログインするすべてのユーザーに適用されます。
[確認 + 追加] で、構成した設定の概要が表示されます。 [追加] を選択してスクリプトを保存します。 [ 追加] を選択すると、スクリプト ポリシーが選択したグループに展開されます。
作成したスクリプトがカスタム属性の一覧に表示されます。 必要に応じて、カスタム属性を 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」を参照してください。