在 Intune 中的 macOS 裝置上使用殼層腳本
使用殼層腳本來擴充 Intune 中的裝置管理功能,超越 macOS 操作系統所支援的功能。
注意事項
Rosetta 2 必須在 Apple Silicon Mac 上執行 x64 (Intel) 版應用程式。 若要在 Apple Silicon Mac 上自動安裝 Rosetta 2,您可以在 Intune 中部署殼層腳本。 若要檢視範例腳本,請參閱 Rosetta 2 安裝腳本。
必要條件
請確定在撰寫殼層腳本並將它們指派給macOS裝置時,符合下列必要條件。
- 裝置正在執行macOS 12.0或更新版本。
- 裝置由 Intune 管理。
- 裝置會直接連線到因特網。 不支援透過 Proxy 的連線。
- Shell 文稿開頭為
#!
,且必須位於有效的位置,例如#!/bin/sh
或#!/usr/bin/env zsh
。 - 已安裝適用殼層的命令行解釋器。
使用殼層腳本之前的重要考慮
- 殼層腳本需要在macOS裝置上成功安裝 Microsoft Intune 管理代理程式。 如需詳細資訊, 請參閱 Microsoft 適用於 macOS 的 Intune 管理代理程式。
- 殼層腳本會以個別的進程在裝置上平行執行。
- 以登入使用者身分執行的殼層腳本,將會在執行時針對裝置上所有目前已登入的使用者帳戶執行。
- 用戶必須登入裝置,才能以登入使用者身分執行腳本。
- 如果腳本需要進行標準用戶帳戶無法進行變更,則需要根用戶權力。
- Shell 腳本會嘗試在特定情況下比所選腳本頻率更頻繁地執行,例如磁碟已滿、儲存位置遭到竄改、本機快取遭到刪除,或 Mac 裝置重新啟動時。
- 執行超過 60 分鐘的殼層腳本會停止,並回報為「失敗」。
建立和指派殼層腳本原則
選 取 [裝置>依據平臺>macOS>管理裝置>腳本>新增]。
在 [ 基本] 中,輸入下列屬性,然後選取 [ 下一步]:
- 名稱:輸入殼層腳本的名稱。
- 描述:輸入殼層腳本的描述。 這是選擇性設定,但建議進行。
在 [腳本設定] 中,輸入下列屬性,然後選取 [ 下一步]:
- 上傳腳本:流覽至殼層腳本。 腳本檔案的大小必須小於 200 KB。
- 以登入使用者身分執行腳本:選取 [是 ] 以在裝置上以使用者的認證執行腳本。 選擇 [ 否 (預設) 以根使用者身分執行腳本。
- 隱藏裝置上的腳本通知: 根據預設,每個執行的腳本都會顯示腳本通知。 終端使用者會看到 IT 正在 macOS 裝置上設定來自 Intune 的電腦通知。
- 腳本頻率: 選取執行腳本的頻率。 選擇 [ 未設定 (預設) 只執行腳本一次。 設定頻率的腳本也會在裝置重新啟動之後執行。
- 腳本失敗時重試的次數上限: 選取腳本傳回非零結束代碼時應該執行的次數, (零表示成功) 。 選擇 [ 未設定 (預設) 在腳本失敗時不重試。
在 [範圍卷標] 中,選擇性地新增腳本的範圍卷標,然後選取 [ 下一步]。 您可以使用範圍標籤來判斷誰可以在 Intune 中看到腳本。 如需範圍標籤的完整詳細數據,請 參閱針對分散式IT使用角色型訪問控制和範圍標籤。
選取 [指派][選取要包含的>群組]。 隨即會顯示Microsoft Entra 群組的現有清單。 選取要接收腳本的一或多個用戶或裝置群組。 選擇 [選取]。 您選擇的群組會顯示在清單中,並會接收您的腳本原則。
注意事項
- 指派給使用者群組的殼層腳本適用於任何登入Mac的使用者。
- 更新殼層腳本的指派也會更新 適用於macOS Microsoft Intune MDM 代理程式的指派。
在 [檢閱 + 新增] 中,會顯示您設定的設定摘要。 選 取 [新增 ] 以儲存腳本。 當您選取 [新增] 時,腳本原則會部署到您選擇的群組。
您建立的文稿現在會出現在文稿清單中。 如有需要,您可以在將 macOS 殼層腳本上傳至 Intune 之後,檢視這些腳本的內容。
監視殼層腳本原則
您可以選擇下列其中一份報告,監視使用者和裝置所有指派腳本的執行狀態:
- 腳本>選取要監視>的腳本裝置狀態
- 腳本>選取要監視>的腳本用戶狀態
重要事項
不論選取的 腳本頻率為何,只有在腳本第一次執行時才會報告腳本執行狀態。 腳本執行狀態不會在後續執行時更新。 不過,更新的腳本會被視為新的腳本,並會再次報告執行狀態。
腳本執行之後,它會傳回下列其中一個狀態:
- 腳本執行狀態為 Failed 表示文本傳回非零結束代碼,或腳本格式不正確。
- 腳本執行狀態 為 Success 表示腳本傳回零做為結束代碼。
使用記錄收集對 macOS 殼層腳本原則進行疑難解答
您可以收集裝置記錄檔,以協助針對macOS裝置上的腳本問題進行疑難解答。
記錄收集的需求
在macOS裝置上收集記錄需要下列專案:
- 您必須指定完整的絕對記錄檔路徑。
- 檔案路徑只能使用分號 (;) 分隔。
- 要上傳的記錄收集大小上限為 60 MB (壓縮) 或 25 個檔案,以先發生者為準。
- 記錄收集允許的檔類型包含下列擴展名: .log、.zip、.gz、.tar、.txt、.xml、.crash、.rtf
收集裝置記錄
流覽至 [裝置>管理裝置>] [腳本和補救>平臺] 腳本 ,然後選取 macOS 殼層腳本。
在 [裝置狀態 ] 或 [ 用戶狀態 報告] 中,選取裝置。
選 取 [收集記錄],提供僅以分號分隔的記錄檔資料夾路徑 (;) 路徑之間沒有空格或換行符。
例如,多個路徑應該寫入為/Path/to/logfile1.zip;/Path/to/logfile2.log
。重要事項
使用逗號、句號、換行符或不含空格的引號分隔的多個記錄檔路徑,將會導致記錄檔收集錯誤。 路徑之間也不允許空格做為分隔符。
選取 [確定]。 下次裝置上的 Intune 管理代理程式使用 Intune 簽入時,就會收集記錄。 此簽入通常每8小時發生一次。
注意事項
- 收集的記錄會在裝置上加密、傳輸並儲存在 Microsoft Azure 記憶體中 30 天。 預存記錄會視需要解密,並使用 Microsoft Intune 系統管理中心下載。
- 除了系統管理員指定的記錄之外,也會從下列資料夾收集 Intune 管理代理程式記錄: 和
~/Library/Logs/Microsoft/Intune
/Library/Logs/Microsoft/Intune
代理程式記錄檔名稱為IntuneMDMDaemon date--time.log
和IntuneMDMAgent date--time.log
。 - 如果遺漏任何系統管理員指定的檔案或擴展名錯誤,您會發現中列出
LogCollectionInfo.txt
這些檔名。
記錄收集錯誤
記錄收集可能因為下表中提供的下列任何原因而無法成功。 若要解決這些錯誤,請遵循補救步驟。
十六進位) (錯誤碼 | 錯誤碼 (dec) | 錯誤訊息 | 補救步驟 |
---|---|---|---|
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 裝置的自定義屬性
選取 [裝置>依據平臺>macOS>組織裝置>][macOS> 新增的自定義屬性]。
在 [ 基本] 中,輸入下列屬性,然後選取 [ 下一步]:
- 名稱:輸入文稿的名稱。
- 描述:輸入腳本的描述。 這是選擇性設定,但建議進行。
在 [ 屬性設定] 中,輸入下列屬性,然後選取 [ 下一步]:
- 屬性的數據類型:選取文本傳回之結果的數據類型。 可用的值為 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
若要以 UTC 時間列印符合 ISO-8601 規範的日期:
#!/bin/sh var=$(date -u +"%Y-%m-%dT%H:%M:%SZ") echo $var # Prints an ISO-8601 compliant date in UTC time
在 [ 指派] 中,按兩下 [選取要包含的群組]。 當您選擇 [選取要包含 現有Microsoft群組清單的群組時,就會顯示 。 選取要接收腳本的一或多個用戶或裝置群組。 選擇 [選取]。 您選擇的群組會顯示在清單中,並會接收您的腳本原則。 或者,您可以在 [指派給] 旁的下拉式方塊中選取其中一個選項,選擇選取 [所有使用者]、[所有裝置] 或 [所有使用者和所有裝置]。
注意事項
- 指派給使用者群組的腳本適用於任何登入 Mac 的使用者。
在 [檢閱 + 新增] 中,會顯示您設定的設定摘要。 選 取 [新增 ] 以儲存腳本。 當您選取 [新增] 時,腳本原則會部署到您選擇的群組。
您建立的文稿現在會出現在自訂屬性清單中。 如有需要,您可以在將自定義屬性上傳至 Intune 之後,檢視這些屬性的內容。
監視自定義屬性原則
您可以選擇下列其中一份報告,監視使用者和裝置的所有已指派自訂屬性設定檔的執行狀態:
- 自訂屬性>選取要監視的自訂屬性配置檔>裝置狀態
- 自訂屬性>選取要監視的自訂屬性配置檔>用戶狀態
重要事項
自訂屬性配置檔中提供的殼層腳本會每隔 8 小時在受控 Mac 上執行一次並回報。
自訂屬性設定檔執行之後,它會傳回下列其中一個狀態:
- [ 失敗 ] 狀態表示文本傳回非零結束代碼,或腳本格式不正確。 此錯誤會在 [ 結果] 資料 行中報告。
- 當狀態為 Success 時,表示腳本傳回零做為結束代碼。 文稿所回應的輸出會在 [ 結果 ] 資料行中回報。
常見問題集
為什麼指派的殼層腳本未在裝置上執行?
可能有幾個原因:
- 代理程式可能需要簽入才能接收新的或更新的腳本。 此簽入程式每隔 8 小時會發生一次,而且與 MDM 簽入不同。 請確定裝置已醒目並連線到網路,以便代理程式成功簽入,並等候代理程式簽入。 您也可以要求終端使用者在 Mac 上開啟公司入口網站、選取裝置,然後按兩下 [檢查設定]。
- 可能未安裝代理程式。 檢查代理程式是否已安裝在
/Library/Intune/Microsoft Intune Agent.app
macOS 裝置上。 - 代理程式可能不是處於狀況良好的狀態。 代理程式會嘗試復原 24 小時、移除本身,並在仍然指派殼層腳本時重新安裝。
腳本執行狀態報告的頻率為何?
腳本執行完成後,就會將腳本執行狀態回報Microsoft Intune 系統管理中心。 如果腳本排定以設定頻率定期執行,則只會在第一次執行時報告狀態。
殼層腳本何時會再次執行?
只有在設定 腳本失敗 設定且腳本在執行時失敗時,才會再次執行腳本。重試的次數上限。 如果未設定 腳本失敗且腳本 在執行時失敗,則重試的次數上限不會再次執行,且執行狀態會回報為 失敗。
殼層腳本需要哪些 Intune 角色許可權?
指派的 intune 角色需要 裝置設定 許可權,才能刪除、指派、建立、更新或讀取殼層腳本。
已知問題
- 沒有腳本執行狀態: 在裝置上收到腳本且裝置在報告執行狀態之前脫機的不太可能情況下,裝置不會在系統管理中心回報腳本的執行狀態。
其他資訊
當您從 Microsoft Intune 部署 macOS 裝置的殼層腳本或自定義屬性時,它會部署在 Apple Silicon Mac 計算機上以原生方式執行的新通用版 Intune 管理代理程式應用程式。 相同的部署會在 Intel Mac 電腦上安裝 x64 版本的應用程式。 Rosetta 2 必須在 Apple Silicon Mac 上執行 x64 (Intel) 版應用程式。 若要在 Apple Silicon Mac 上自動安裝 Rosetta 2,您可以在 Intune 中部署殼層腳本。 若要檢視範例腳本,請參閱 Rosetta 2 安裝腳本。