在 Windows 10/11 裝置上使用PowerShell腳本 Intune

使用 Microsoft Intune 管理延伸模組,在 Intune 中上傳 PowerShell 腳本。 然後,在 Windows 10 裝置上執行這些腳本。 管理延伸模組可增強 MDM) (Windows 裝置管理,並讓您更輕鬆地移至新式管理。

重要事項

若要支持擴充的功能和 Bug 修正,請使用 .NET Framework 4.7.2 或更新版本搭配 Windows 用戶端上的 Intune 管理延伸模組。 如果 Windows 用戶端繼續使用舊版的 .NET Framework,Intune 管理延伸模組將會繼續運作。 自 2018 年 7 月 10 日起,Windows Update 提供 .NET Framework 4.7.2,其包含在 Win10 1809 (RS5) 和更新版本中。 請注意,.NET Framework 版本的多個版本可以在裝置上共存。

本功能適用於:

  • 不含 Windows 10 家用版) 的 Windows 10 和更新版本 (

注意事項

一旦符合 Intune 管理延伸模組必要條件,當 PowerShell 腳本或 Win32 應用程式、Microsoft Store 應用程式、自定義合規性原則設定或主動式補救指派給使用者或裝置時,就會自動安裝 Intune 管理延伸模組。 如需詳細資訊,請參閱 Intune 管理延伸模組必要條件。

PowerShell 腳本在 WPJ) 裝置的工作場所加入 (未正式支援,可以部署到 WPJ 裝置。 具體而言,裝置內容 PowerShell 腳本可在 WPJ 裝置上運作,但用戶內容 PowerShell 腳本的設計會予以忽略。 WPJ 裝置上會忽略用戶內容腳本,且不會向 Microsoft Intune 系統管理中心回報。

移至新式管理

用戶運算正在經歷數字轉型。 傳統IT著重於單一裝置平臺、企業擁有的裝置、從辦公室工作的使用者,以及不同的手動、回應式IT程式。 新式工作場所使用許多屬於使用者和企業擁有的平臺。 它可讓使用者從任何地方工作,並提供自動化和主動的IT程式。

MDM 服務,例如 Microsoft Intune,可以管理執行 Windows 10 的行動裝置和桌面裝置。 內建 Windows 10 管理用戶端會與 Intune 通訊,以執行企業管理工作。 您可能需要一些工作,例如進階裝置設定和疑難解答。 針對 Win32 應用程式管理,您可以在 Windows 10 裝置上使用 Win32 應用程式管理功能。

Intune 管理延伸模組可補充內建 Windows 10 MDM 功能。 您可以建立要在 Windows 10 裝置上執行的 PowerShell 腳本。 例如,建立執行進階裝置設定的PowerShell腳本。 然後,將腳本上傳至 Intune、將腳本指派給 Microsoft Entra 群組,然後執行腳本。 然後,您可以從開始到完成監視腳本的執行狀態。

開始之前

  • 當腳本設定為用戶內容,且終端使用者具有系統管理員許可權時,PowerShell 腳本預設會以系統管理員許可權執行。

  • 使用者不需要登入裝置即可執行PowerShell腳本。

  • Intune 管理延伸模組代理程式會在每次重新啟動后檢查是否有任何新的腳本或變更。 將原則指派給 Microsoft Entra 群組之後,就會執行PowerShell腳本,並報告執行結果。 腳本執行之後,除非腳本或原則中有變更,否則不會再次執行。 如果腳本失敗,Intune 管理延伸模組代理程式會針對接下來的三個連續 Intune 管理延伸模組代理程序簽入重試腳本三次。

  • 針對共享裝置,PowerShell 腳本會針對每個登入的新用戶執行。

  • PowerShell 腳本會在 Win32 應用程式執行之前執行。 換句話說,PowerShell 腳本會先執行。 然後,執行 Win32 應用程式。

  • PowerShell 腳本會在 30 分鐘後逾時。

重要事項

使用 PowerShell 腳本和補救腳本時,隱私權感知的最佳做法包括:

  • 請勿在腳本 (中包含任何類型的敏感性資訊,例如密碼)
  • 請勿在腳本中包含個人標識資訊 (PII)
  • 請勿使用腳本從裝置收集 PII
  • 一律遵循隱私權最佳做法

如需相關信息,請參閱 補救

必要條件

Intune 管理延伸模組具有下列必要條件。 一旦符合,Intune 管理延伸模組會在PowerShell腳本或 Win32 應用程式指派給使用者或裝置時自動安裝。

  • 執行 Windows 10 1607 版或更新版本的裝置。 如果裝置是使用大量自動註冊來註冊,則裝置必須 Windows 10 1709 版或更新版本執行。 S 模式 Windows 10 不支援 Intune 管理延伸模組,因為 S 模式不允許執行非市集應用程式。

  • 已加入 Microsoft Entra ID 的裝置,包括:

  • Microsoft Entra 已註冊/加入工作場所 (WPJ) :在 Microsoft Entra ID 中註冊的裝置,如需詳細資訊,請參閱加入工作場所作為順暢的第二因素驗證。 這些通常是自備裝置 (BYOD) 裝置,這些裝置已透過>設定帳戶>存取公司或學校新增公司或學校帳戶。

  • 在 Intune 中註冊的裝置,包括:

    • 在組策略中註冊的裝置 (GPO) 。 如需指引,請參閱使用 群組原則 自動註冊 Windows 10 裝置

    • 在 Intune 中手動註冊的裝置,其時機如下:

      • Microsoft Entra ID 中已啟用自動註冊 Intune。 使用者使用本機用戶帳戶登入裝置,並手動將裝置加入 Microsoft Entra ID。 然後,他們使用其 Microsoft Entra 帳戶登入裝置。

      OR

      • 使用者使用其 Microsoft Entra 帳戶登入裝置,然後註冊 Intune。
    • 使用 Configuration Manager和 Intune 的共同管理裝置。 安裝 Win32 應用程式時,請確定 [應用程式] 工作負載已設定為 [試驗 IntuneIntune]。 即使 [應用程式] 工作負載設定為 [Configuration Manager,也會執行 PowerShell 腳本。 當您將PowerShell腳本目標設為裝置時,Intune管理延伸模組將會部署到裝置。 請記住,裝置必須是 Microsoft Entra ID 或 Microsoft Entra 混合式聯結裝置。 而且,它必須執行 Windows 10 1607 版或更新版本。 如需指引,請參閱下列文章:

  • 如果裝置的系統時鐘超過月份或年份的過期,部署至執行 Intune 管理延伸模組之用戶端的腳本將無法執行。 一旦系統時鐘更新為最新狀態,腳本就會如預期般執行。

注意事項

如需使用 Window 10 VM 的相關信息,請參閱搭配使用 Windows 10 虛擬機與 Intune

Create 腳本原則並指派

  1. 登入 Microsoft Intune 系統管理中心

  2. 取 [裝置>腳本和補救>平臺腳本>新增>Windows 10 及更新版本]

    顯示為 Windows 10 裝置建立新腳本的螢幕快照。

  3. 在 [ 基本] 中,輸入下列屬性,然後選取 [ 下一步]

    • 名稱:輸入 PowerShell 腳本的名稱。
    • 描述:輸入 PowerShell 腳本的描述。 這是選擇性設定,但建議進行。
  4. [腳本設定] 中,輸入下列屬性,然後選取 [ 下一步]

    • 腳本位置:流覽至 PowerShell 腳稿。 腳本必須小於 200 KB (ASCII) 。

    • 使用登入的認證執行此腳本:選取 [ ] (預設) ,以在裝置上使用使用者的認證執行腳本。 選擇 [否 ] 以在系統內容中執行腳本。 許多系統管理員選擇 [是]。 如果需要腳本才能在系統內容中執行,請選擇 [否]

    • 強制執行腳本簽章檢查:如果腳本必須由受信任的發行者簽署, (默認) 選取 [ ]。 如果不需要簽署腳本,請選取 [ ]。

    • 在 64 位 PowerShell 主機中執行腳本:選取 [ ] 以在 64 位客戶端架構的 64 位 PowerShell 主機上執行腳本。 選取 [否 (預設) 在 32 位 PowerShell 主機中執行腳本。

      當設定為 [是] 或 [ 否] 時,請針對新的和現有的原則行為使用下表:

      在64位主機中執行腳本 客戶端架構 新腳本 現有的原則腳本
      32 位元 支援 32 位 PowerShell 主機 只在 32 位 PowerShell 主機中執行,這適用於 32 位和 64 位架構。
      64 位元 在 64 位 PowerShell 主機中執行 64 位架構的腳本。 在 32 位上執行時,腳本會在 32 位的 PowerShell 主機中執行。 在 32 位 PowerShell 主機中執行腳本。 如果此設定變更為 64 位,則腳本會開啟 (不會在 64 位 PowerShell 主機中執行) ,並報告結果。 在 32 位上執行時,腳本會在 32 位 PowerShell 主機中執行。
  5. 取 [範圍卷標]。 範圍標籤是選用的。 使用角色型訪問控制 (RBAC) 和分散式 IT 的範圍標籤 具有詳細資訊。

    若要新增範圍標籤:

    1. 選擇 [選取範圍卷標]> 從清單>中選取現有的範圍卷標 選取 [選取]

    2. 完成時,選取 [ 下一步]

  6. 取 [指派][選取要包含的>群組]。 系統會顯示 Microsoft Entra 群組的現有清單。

    1. 選取一或多個群組,其中包含裝置接收腳本的使用者。 選擇 [選取]。 您選擇的群組會顯示在清單中,並會收到您的原則。

      注意事項

      Intune 中的PowerShell腳本可以設為 Microsoft Entra裝置安全組或 Microsoft Entra 使用者安全組。 不過,將目標設為加入工作場所 (WPJ) 裝置時,只能使用 Microsoft Entra 裝置安全組 () 會忽略以使用者為目標。 如需詳細資訊,請參閱 WPJ) 裝置的工作場所加入 (Win32 應用程式支援

    2. 選取 [下一步]

      在 Microsoft Intune 中將PowerShell腳本指派或部署至裝置群組

  7. [檢閱 + 新增] 中,會顯示您設定的設定摘要。 選 取 [新增 ] 以儲存腳本。 當您選取 [新增] 時,原則會部署到您選擇的群組。

無法執行腳本範例

上午8點

  • 登記
  • 執行腳本 ConfigScript01
  • 腳本失敗

上午 9 點

  • 登記
  • 執行腳本 ConfigScript01
  • 腳本失敗 (重試計數 = 1)

上午 10 點

  • 登記
  • 執行腳本 ConfigScript01
  • 腳本失敗 (重試計數 = 2)

上午 11 點

  • 登記
  • 執行腳本 ConfigScript01
  • 腳本失敗 (重試計數 = 3)

下午 12 點

  • 登記
  • 不會嘗試執行 ConfigScript01腳本。
  • 如果未對腳本進行其他變更,則不會嘗試執行腳本。

監視執行狀態

您可以在入口網站中監視使用者和裝置的PowerShell腳本執行狀態。

PowerShell 腳本中,選取要監視的腳本,選擇 [ 監視],然後選擇下列其中一份報告:

  • 裝置狀態
  • 使用者狀態

Intune 管理延伸模組記錄

用戶端電腦上的代理程式記錄通常位於 C:\ProgramData\Microsoft\IntuneManagementExtension\Logs。 您可以使用 CMTrace.exe 來檢視這些記錄檔。

Microsoft Intune 中的螢幕快照或範例 cmtrace 代理程序記錄

刪除文稿

PowerShell 腳本中,以滑鼠右鍵按下腳本,然後選取 [ 刪除]

常見問題和解決方案

問題:Intune 管理延伸模組未下載

可能的解決方法

  • 裝置未加入 Microsoft Entra ID。 請確定裝置符合本文) (的必要 條件。
  • 沒有指派給使用者或裝置所屬群組的PowerShell腳本或Win32應用程式。
  • 裝置無法簽入 Intune服務。 例如,沒有因特網存取、無法存取 Windows 推播通知服務 (WNS) 等等。
  • 裝置處於 S 模式。 在 S 模式下執行的裝置不支援 Intune 管理延伸模組。

若要查看裝置是否已自動註冊,您可以:

  1. 移至 [設定>帳戶>] [存取公司或學校]
  2. 選取已加入的帳戶 >資訊
  3. 在 [進階診斷報告] 底下,選取 [Create 報表]
  4. MDMDiagReport 網頁瀏覽器開啟 。
  5. MDMDeviceWithAAD 屬性的 搜尋。 如果屬性存在,則會自動註冊裝置。 如果此屬性不存在,則裝置不會自動註冊。

啟用 Windows 10 自動註冊包含在 Intune 中設定自動註冊的步驟。

問題:PowerShell 腳本未執行

可能的解決方法

  • PowerShell 腳本不會在每次登入時執行。 它們會執行:

    • 將腳本指派給裝置時

    • 如果您變更文本,請上傳腳本,並將腳本指派給使用者或裝置

      提示

      Microsoft Intune 管理延伸模組是在裝置上執行的服務,就像 Services 應用程式中列出的任何其他服務 (services.msc) 一樣。 裝置重新啟動之後,此服務也可能會重新啟動,並使用 Intune 服務檢查是否有任何指派的 PowerShell 腳本。 如果 Microsoft Intune 管理延伸模組服務設定為 [手動],則在裝置重新啟動之後,服務可能不會重新啟動。

  • 請確定裝置已加入 Microsoft Entra ID。 只有加入您工作場所或組織 (在 Microsoft Entra ID) 註冊的裝置將不會收到腳本。

  • 確認 Intune 管理延伸模組已下載至 %ProgramFiles(x86)%\Microsoft Intune Management Extension

  • 腳本不會在 Surface Hub 上執行,也不會在 S 模式中 Windows 10。

  • 檢閱記錄中是否有任何錯誤。 請參閱本文 ) 中的 Intune 管理延伸模組記錄 (。

  • 針對可能的許可權問題,請確定 PowerShell 文稿的屬性已設定為 Run this script using the logged on credentials。 另請檢查已登入的使用者是否具有執行腳本的適當許可權。

  • 若要隔離文稿問題,您可以:

    • 檢閱您裝置上的PowerShell執行設定。 如需指引,請參閱 PowerShell執行 原則。

    • 使用 Intune 管理延伸模組執行範例腳本。 例如,建立 C:\Scripts 目錄,並讓每個人完全掌控。 執行下列指令碼:

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      如果成功,應該建立 output.txt,而且應該包含「腳本已運作」文字。

    • 若要在不 Intune 的情況下測試腳本執行,請在本機使用 psexec 工具在系統帳戶中執行腳本:

      psexec -i -s

    • 如果腳本回報成功,但實際上並未成功,則您的防病毒軟體服務可能是沙盒化 AgentExecutor。 下列腳本一律會回報 Intune 失敗。 作為測試,您可以使用此文稿:

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp" 
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      如果文稿回報成功,請查看 AgentExecutor.log 以確認錯誤輸出。 如果腳本執行,長度應該是 >2。

    • 為了擷 .error 取 和 .output 檔案,下列代碼段會透過 AgentExecutor 執行腳本至 PowerShell x86 () C:\Windows\SysWOW64\WindowsPowerShell\v1.0 。 它會保留記錄以供您檢閱。 請記住,Intune 管理延伸模組會在文稿執行之後清除記錄:

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000 
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

後續步驟

監視 您的配置檔並 進行疑難解答