クラウドエンジニアブログ

Intune にて PowerShell スクリプトを配布する方法について

池田 耕一

みなさま、初めまして。
SB テクノロジーの池田です。

現在、私は Microsoft Enterprise Mobility + Security (EMS) のヘルプデスクを行う部署に配属させていただき、4か月ほど経過しました。
今後 Microsoft Intune (以降 Intune) や EMS 関連の記事を掲載していきますので、どうぞよろしくお願いいたします。

今回は、Intune 管理している Windows 10/11 デバイスに対する PowerShell スクリプトの配布機能についてご紹介します。

<参考情報>
PowerShell とは

PowerShell スクリプトの配布を使用するケースとしましては、例えばデバイスが複数存在する環境において OS の設定を一括で設定したいということがあると思います。

上記を実現する方法は様々あると思いますが、Intune のスクリプト配布機能を利用することで、比較的簡単に複数デバイス (グループでの制御が可能) に対して OS の設定を変更することが可能です。

今回は例として、ストレージセンサー (※) を30日周期で実行するための設定を Intune のスクリプト機能を用いてデバイスに対して配布したいと思います。
(※ 不要になったファイルなどを自動的に削除し、ドライブの空き容量を確保することが可能な OS の機能です。)

なお、Intune からの Win32 アプリの展開については、以下の記事を参考にしてください。
Intune を利用して Win32 アプリを展開してみる


「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


前提について

Intune でスクリプトを利用するには、以下の前提条件を満たしている必要があります。

 ・ Windows 10 バージョン 1607 以降 (Enterprise、Pro、または Education エディション)
 ・ Azure AD 登録(Azure AD registered)
 ・ Azure AD 参加(Azure AD joined)
 ・ Hybrid Azure AD 参加

<参考情報>
Intune で Windows 10/11 デバイスに対して PowerShell スクリプトを使用する - 前提条件



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


PowerShell スクリプトの作成

まずは準備として以下の PowerShell スクリプトを作成し、任意の場所に保存します。

StorageSensorEnable.ps1

# ストレージセンサーの有効化
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\StorageSense" /v AllowStorageSenseGlobal /t REG_DWORD /d 1 /f

# ストレージセンサーを実行するタイミング (毎月)
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\StorageSense" /v ConfigStorageSenseGlobalCadence /t REG_DWORD /d 30 /f

※「AllowStorageSenseGlobal」に指定できる値は「1:有効」「0:無効」です。
※「ConfigStorageSenseGlobalCadence」に指定できる値は「0:ディスクの空き領域の不足時」「1:毎日」「7:毎週」「30:毎月」です。

なお、上記スクリプトによるレジストリにて「ストレージセンサー」を設定した場合、Windows の「設定」-「記憶域」-「ストレージセンサーを構成する」の画面からは設定を変更できなくなりますのでご注意ください。

スクリプトの作成については以上となります。



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


Intune スクリプト配布用グループの作成

作成したスクリプトの配布対象となるグループを作成します。

なお、既に適用対象となるグループが作成済みの場合は、次の「Intune スクリプト配布」以降の手順をご確認ください。

Intune のスクリプトは、ユーザー グループおよびデバイス グループの両方に配布が可能となりますが、今回はデバイス グループを作成して配布します。

<参考情報>
Microsoft Intune を使用してアプリをグループに割り当てる

1.ブラウザから Microsoft Intune 管理センター (https://intune.microsoft.com) を起動し、左ペインから [グループ] をクリック後、[新しいグループ] をクリックします。

2.[新しいグループ] 画面に遷移後、以下を入力および選択後に [作成] をクリックします。
(その他は既定値としています。)

左右にスクロールしてご覧ください。

項目 設定
グループの種類 セキュリティ
グループ名 任意のグループ名
※ 今回は TEST-PowerShellGroup と入力
メンバーシップの種類 割り当て済み
メンバー 配信対象デバイス
※ 今回は DESKTOP-M0G4VBR を選択

3.グループ作成後、対象のデバイスがメンバーとして追加されていることを確認します。

デバイスグループの作成は以上となります。



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


Intune スクリプト配布

Microsoft Intune 管理センターから先程作成したグループ (デバイス) に対してスクリプトを配布していきます。

1.Microsoft Intune 管理センター (https://intune.microsoft.com) にサインインします。

2.左ペインより、[デバイス] - [スクリプト] - [追加] - [Windows 10 以降] をクリックします。

3.[基本] タブで、次のプロパティを入力し、[次へ] をクリックします。

左右にスクロールしてご覧ください。

項目 設定
名前 任意のポリシー名
※ 今回は「ストレージセンサー有効化」を指定
説明 スクリプトの説明を記載
※ 省略可

4.[スクリプト設定] で、次のプロパティを入力し、[次へ] をクリックします。

左右にスクロールしてご覧ください。

項目 設定
スクリプトの場所 StorageSensorEnable.ps1
(「ファイルの選択」ダイアログより、[PowerShell スクリプトの作成] にて作成した PowerShell スクリプトを選択します。)
※ スクリプトの容量上限は 200KB となります。
このスクリプトをログオンしたユーザーの資格情報を使用して実行する いいえ
(今回のようにシステム コンテキストでデバイスに対して実行させる場合は [いいえ] を選択します。
ログインしたユーザーの資格情報を使用してスクリプトを実行する場合は [はい] を選択します。)
スクリプト署名チェックを強制 いいえ
(信頼できる発行元によってスクリプトに署名する必要がある場合は、[はい] を選択します。スクリプトに署名する要件がない場合は、[いいえ] を選択します。)
64 ビットの PowerShell ホストでスクリプトを実行する いいえ
(64 ビット のクライアント アーキテクチャ上の PowerShell ホストでスクリプトを実行する場合は [はい] を選択します。
32 ビット PowerShell ホストでスクリプトを実行する場合は [いいえ] を選択します。)

5.[割り当て] - [組み込まれたグループ] - [グループを追加] をクリックします。
Azure AD グループの既存のリストが表示されますので先ほど作成したグループを選択し、[次へ] をクリックします。

6.[確認 + 追加] で、構成した設定の概要が表示されます。 [追加] をクリックしてスクリプトを保存します。
この [追加] をクリックしたタイミングより、割り当てを行ったグループにスクリプトが配布されます。

Intune スクリプト配布については以上となります。



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


Intune スクリプト配布後の確認

スクリプトが作成できましたら、対象のデバイスへスクリプトが配布されているか確認します。

1.対象デバイスへログイン後、スタートボタンの検索ボックスにて [設定] を検索し、クリックします。

2.システムより、[ストレージ] をクリックします。

3.ストレージ より、記憶域の管理に存在する [ストレージ センサー] をクリックします。

4.ユーザー コンテンツの自動クリーンアップが「オン」 になっていること、およびストレージ センサーを実行するタイミングが 「毎月」 になっていることを確認します。

※ 前述の通り、Powershell からレジストリで設定しているため、本画面からの設定変更は不可となります。

Intune スクリプト配布の確認については以上となります。



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


Intune スクリプトの補足について

ここまで Intune の基本的なスクリプト配布設定について手順を記載致しました。

補足としまして、注意すべき点を以下に記載致しますので、ご利用の際はこちらも参考にしてください。

● スクリプトの実行タイミングについて
以下がデバイス上でスクリプトが実行される条件となります。

 1. 新規作成されたスクリプトを配布した場合
 2. 既存のスクリプトにてスクリプト内容の変更を行った、もしくはスクリプト以外の設定変更を行った場合

※ スクリプト内容に変更のないスクリプト ファイルを再度アップロードしても再実行されません。
※ スクリプト内容に変更がない場合も、Intune 上でその他の設定値を変更した場合は再実行されるため、繰り返し実行されることを想定していないスクリプトの場合はご注意ください。

● スクリプトの実行タイミングについて
スクリプト配布設定後、デバイス側では以下のタイミングにて実行されます。

 1.「Intune Management Extension」サービスが起動した場合
  ※ OS 再起動またはサービス再起動時
 2. 1時間おきに行われるデバイス側のチェック時

● スクリプト失敗について
スクリプト内でエラーストリームへ出力があると Intune 上で「失敗」のステータスになります。

【エラーストリームへの出力は以下のいずれかが該当した場合】
 1. Write-Error が実行された
 2. Throw で明示的に例外を投げた
 3. スクリプト内でなんらかの例外が発生した

なお、失敗となったスクリプトについては、その後成功するまで1時間おきに3回まで再実行されます。

また、単純にリターンコードで「exit 1」を返しても「失敗」とはならない点にもご注意ください。あくまでもエラーストリームへ出力があったかどうかが判断基準となるようです。

● ログについて
残念ながら Intune 上で詳細なログを確認する手段はございません。
詳細なログは独自にスクリプト内でデバイスへ直接出力し、トラブルシューティングを実施しましょう。



「Enterprise Mobility + Security 導入支援サービス」はこちら

「Office 365 ヘルプデスク」はこちら


まとめ

いかがでしたでしょうか。今回は Intune を利用した Powershell スクリプトの配布を行いました。

Intune の Powershell スクリプト配布は、定期的な実行ができないことや、200KBを超える本格的なスクリプトの展開はできませんが、軽微な設定変更などであれば使い勝手がよいため、是非活用してもらえればと思います。

次回も EMS に関連する記事、または自分が興味ある分野について執筆していこうと思います。最後まで読んでいただきありがとうございました!

関連ページ

「Enterprise Mobility + Security 導入支援サービス」はこちら
「Office 365 ヘルプデスク」はこちら

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録