Intune で Windows 10/11 デバイスに対して PowerShell スクリプトを使用する

Intune に PowerShell スクリプトをアップロードするには、Microsoft Intune 管理拡張機能を使用します。 次に、Windows 10 デバイスでこれらのスクリプトを実行します。 管理拡張機能は Windows デバイス管理 (MDM) を拡張するもので、最新の管理に簡単に移行できます。

重要

拡張された機能とバグ修正をサポートするには、Windows クライアントの Intune 管理拡張機能で .NET Framework 4.7.2 以降を使用します。 Windows クライアントが以前のバージョンの.NET Frameworkを引き続き使用する場合、Intune 管理拡張機能は引き続き機能します。 .NET Framework 4.7.2 は、Win10 1809 (RS5) 以降に含まれる 2018 年 7 月 10 日の時点でWindows Updateから入手できます。 .NET Frameworkバージョンの複数のバージョンがデバイス上で共存できることに注意してください。

この機能は、以下に適用されます。

  • Windows 10 以降 (Windows 10 Home を除く)

注:

Intune 管理拡張機能の前提条件が満たされると、PowerShell スクリプトまたは Win32 アプリ、Microsoft Store アプリ、カスタム コンプライアンス ポリシー設定、またはプロアクティブ修復がユーザーまたはデバイスに割り当てられると、Intune 管理拡張機能が自動的にインストールされます。 詳細については、Intune 管理拡張機能の前提条件を参照してください。

Workplace Join (WPJ) デバイスで公式にサポートされていない PowerShell スクリプトを WPJ デバイスにデプロイできます。 具体的には、デバイス コンテキストの PowerShell スクリプトは WPJ デバイスで機能しますが、ユーザー コンテキストの PowerShell スクリプトは設計上、無視されます。 WPJ デバイスではユーザー コンテキスト スクリプトは無視され、Microsoft Intune管理センターには報告されません。

最新の管理への移行

ユーザーのコンピューティングはデジタル変換を経ています。 従来の IT 担当者は、単一のデバイス プラットフォーム、企業所有のデバイス、オフィスで働くユーザー、および手動で事後対応型の多様な IT プロセスに重点を置きます。 現代の職場では、ユーザーと企業が所有するさまざまなプラットフォームが使用されています。 これにより、ユーザーはどこからでも作業でき、自動化されたプロアクティブな IT プロセスを実現できます。

Microsoft Intune などの MDM サービスでは、Windows 10 を実行するモバイル デバイスとデスクトップ デバイスを管理できます。 組み込みの Windows 10 管理クライアントは、Intune と通信してエンタープライズ管理タスクを実行します。 高度なデバイス構成やトラブルシューティングなど、必要な場合があるタスクがいくつかあります。 Win32 アプリの管理の場合、ご自分の Windows 10 デバイス上の Win32 アプリの管理機能を使えます。

Intune 管理拡張機能は、Windows 10 MDM の標準機能を補完するものです。 PowerShell スクリプトを作成し、Windows 10 デバイスで実行することができます。 たとえば、高度なデバイス構成を行う PowerShell スクリプトを作成します。 次に、スクリプトを Intune にアップロードし、スクリプトを Microsoft Entra グループに割り当てて、スクリプトを実行します。 スクリプトの実行状態を最初から完了まで監視できます。

はじめに

  • スクリプトがユーザー コンテキストに設定され、エンド ユーザーに管理者権限がある場合、既定で PowerShell スクリプトは管理者特権で実行されます。

  • エンド ユーザーは、PowerShell スクリプトを実行するためにデバイスにサインインする必要はありません。

  • Intune 管理拡張機能のエージェントにより、Intune で 1 時間ごと、および再起動のたびに、新しいスクリプトまたは変更がないか確認されます。 Microsoft Entra グループにポリシーを割り当てると、PowerShell スクリプトが実行され、実行結果が報告されます。 スクリプトは一度実行されると、スクリプトまたはポリシーに変更が発生するまで、再実行されません。 スクリプトが失敗した場合、Intune 管理拡張機能エージェントにより、次の 3 つの連続する Intune 管理拡張機能エージェントのチェックインに対して、スクリプトが 3 回試行されます。

  • 共有デバイスの場合、サインインするすべての新しいユーザーに対して PowerShell スクリプトが実行されます。

  • PowerShell スクリプトは、Win32 アプリの実行前に実行されます。 つまり、PowerShell スクリプトは最初に実行されます。 次に、Win32 アプリが実行されます。

  • PowerShell スクリプトは 30 分後にタイムアウトになります。

重要

PowerShell スクリプトと修復スクリプトを使用する場合のプライバシー認識のベスト プラクティスは次のとおりです。

  • スクリプト (パスワードなど) に機密情報の種類を含めないでください
  • スクリプトに個人を特定できる情報 (PII) を含めないでください
  • スクリプトを使用してデバイスから PII を収集しない
  • 常にプライバシーに関するベスト プラクティスに従う

関連情報については、「 修復」を参照してください。

前提条件

Intune 管理拡張機能には次の前提条件があります。 これらが満たされると、PowerShell スクリプトまたは Win32 アプリがユーザーやデバイスに割り当てられたときに、Intune 管理拡張機能が自動的にインストールされます。

  • Windows 10 バージョン 1607 以降を実行しているデバイス。 デバイスが一括自動登録を使用して登録される場合は、Windows 10 バージョン 1709 以降でデバイスを実行する必要があります。 Intune 管理拡張機能は S モードの Windows 10 ではサポートされません。S モードではストア以外にあるアプリの実行が許可されないためです。

  • Microsoft Entra IDに参加しているデバイス(次を含む):

    • Microsoft Entraハイブリッド参加済み: デバイスはMicrosoft Entra IDに参加し、オンプレミスの Active Directory (AD) にも参加しました。 ガイダンスについては、「Microsoft Entraハイブリッド結合の実装を計画する」を参照してください。
  • Microsoft Entra登録済み/Workplace 参加済み (WPJ): Microsoft Entra IDに登録されているデバイスについては、「シームレスな第 2 要素認証としての Workplace Join」を参照してください。 通常、これらは、職場または学校のアカウントが [設定>>アカウント] [職場または学校にアクセス] を使用して追加された Bring Your Own Device (BYOD) デバイスです。

  • 次を含む、Intune に登録されたデバイス:

    • グループ ポリシー (GPO) に登録されたデバイス。 ガイダンスについては、「Enroll a Windows 10 device automatically using Group Policy」(グループ ポリシーを使用して Windows 10 デバイスを自動的に登録する) を参照してください。

    • 次の状況で、Intune に手動で登録されたデバイス:

      • Intune への自動登録は、Microsoft Entra IDで有効になっています。 ユーザーはローカル ユーザー アカウントを使用してデバイスにサインインし、デバイスに手動で参加してMicrosoft Entra IDします。 その後、Microsoft Entra アカウントを使用してデバイスにサインインします。

      または

      • ユーザーは、Microsoft Entra アカウントを使用してデバイスにサインインし、Intune に登録します。
    • Configuration Manager と Intune を使用して共同管理しているデバイス。 Win32 アプリをインストールする場合、[アプリ] のワークロードが [パイロット Intune] または [Intune] に設定されていることを確認します。 [アプリ] ワークロードが [Configuration Manager] に設定されている場合でも、PowerShell スクリプトが実行されます。 Intune 管理拡張機能は PowerShell スクリプトのターゲットをデバイスにすると、デバイスに展開されます。 デバイスは、Microsoft Entra IDまたはハイブリッド参加済みデバイスMicrosoft Entra必要があります。 また、Windows 10 バージョン 1607 以降を実行している必要があります。 ガイダンスについては、次の記事を参照してください。

  • デバイスのシステム クロックが非常に (数か月または数年) 遅れている場合、Intune 管理拡張機能を実行しているクライアントにデプロイされたスクリプトは、実行に失敗します。 システム クロックを最新の状態にすると、スクリプトは期待通りに実行されます。

注:

Window 10 VM の使用の詳細については、「Intune での Windows 10 仮想マシンの使用」を参照してください。

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

  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 ビットおよび 64 ビットのアーキテクチャで動作する 32 ビット PowerShell ホストでのみ実行されます。
      はい 64 ビット 64 ビット アーキテクチャ用の 64 ビットの PowerShell ホストでスクリプトが実行されます。 32 ビット上で実行した場合、スクリプトは 32 ビットの PowerShell ホストで実行されます。 32 ビットの PowerShell ホストでスクリプトが実行されます。 この設定が 64 ビットに変更されると、スクリプトは 64 ビットの PowerShell ホストで開き (実行されない)、スクリプトから結果がレポートされます。 32 ビット上で実行した場合、スクリプトは 32 ビットの PowerShell ホストで実行されます。
  5. [スコープ タグ] を選択します。 スコープ タグは省略可能です。 「Use role-based access control (RBAC) and scope tags for distributed IT」 (分散 IT にロールベースのアクセス制御 (RBAC) とスコープ タグを使用する) に詳細情報が含まれています。

    スコープ タグを追加するには、次のようにします。

    1. [スコープ タグ>の選択] の一覧>から既存のスコープ タグを選択します

    2. 完了したら、[次へ] を選択します。

  6. [割り当て]>[含めるグループを選択] の順に選択します。 Microsoft Entra グループの既存の一覧が表示されます。

    1. スクリプトを受信するデバイスを持つユーザーが属する 1 つまたは複数のグループを選択します。 [選択] を選択します。 選択したグループがリストに表示され、ポリシーが示されます。

      注:

      Intune の PowerShell スクリプトは、デバイス セキュリティ グループをMicrosoft Entraするか、ユーザー セキュリティ グループMicrosoft Entra対象にすることができます。 ただし、Workplace joined (WPJ) デバイスをターゲットにする場合、Microsoft Entraデバイス セキュリティ グループのみを使用できます (ユーザー のターゲット設定は無視されます)。 詳細については、「Win32 アプリによる Workplace Join (WPJ) デバイスのサポート」を参照してください。

    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 モードである。 Intune 管理拡張機能は、S モードで実行されているデバイスではサポートされません。

デバイスが自動登録されているかどうかを確認するには、次の手順を実行します。

  1. [設定]>[アカウント]>[職場または学校にアクセスする] の順に移動します。
  2. 参加しているアカウント>情報を選択します
  3. [高度な診断レポート] で、[レポートの作成] を選択します。
  4. Web ブラウザーで、MDMDiagReport を開きます。
  5. MDMDeviceWithAAD プロパティを探します。 プロパティが存在する場合は、デバイスが自動登録されています。 プロパティが存在しない場合、デバイスは自動登録されません。

Windows 10 の自動登録を有効にする」には、Intune で自動登録を構成するための手順が含まれています。

問題: PowerShell スクリプトが実行されない

考えられる解決策:

  • PowerShell スクリプトは、サインインのたびには実行されません。 次の場合に実行されます。

    • スクリプトがデバイスに割り当てられるとき

    • スクリプトを変更し、アップロードし、ユーザーまたはデバイスにそのスクリプトを割り当てるとき

      ヒント

      Microsoft Intune 管理拡張機能はサービス アプリ (services.msc) に表示されているその他のサービスと同様、デバイスで実行されるサービスです。 デバイスが再起動した後、このサービスも再開する可能性があります。Intune サービスで割り当てられている PowerShell スクリプトがないかを確認してください。 Microsoft Intune 管理拡張機能サービスが手動に設定されている場合は、デバイスの再起動後にサービスが再開しない可能性があります。

  • デバイスがMicrosoft Entra IDに参加していることを確認します。 職場またはorganizationにのみ参加している (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 が作成されて、"Script worked" というテキストが含まれるはずです。

    • 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
      

次の手順

プロファイルを監視してトラブルシューティングします。