大分前から、グループポリシーの設定を自動化する需要がありました。やっと、Windows 2012 R2の時代、PowershellからAD上のGPO(グループポリシーオブジェクト)を操作できると歌われました。ただし、実際は落とし穴があります。
-
落し穴1:Powershell中のグループポリシーモジュールは、ADと組んでいますので、ローカルのグループポリシーを設定するには利用できません。(興味あればMicrosoft.GroupPolicy.Management関連のdllをdotPeekでソースを参照すれば分かります).
ちなみに、ローカルグループポリシー中のレジストリ設定を変更するには、MSも高層APIを提供していないので、これを利用すればOK。
-
落し穴2:Powershell中のグループポリシーモジュールは、AD上のグループポリシーの中身を自由に変更できません(レジストリベースの設定しか設定できません)。
特に、アプリ配信のポリシーの中身は外部XMLに保存されているし、その中にはさらにバイナリ設定データが入っていますので、Powershellのグループポリシーモジュールは、これらの設定には全然無力です、これらの設定を変更するには、グループポリシーエディターが利用している該当グループポリシー拡張COM DLL(typelibなし)を無理やり利用するしか方法ない。
他に、ファイル設定、タスク設定、サービス設定、AppLocker、SRPなどはバイナリなしのXMLに保存されている、同様に、Powershellのグループポリシーモジュールは設定できないが、PowershellでXMLファイルを直接いじることができますので、なんとなく対応できますね。
とりあえず、上記2点。
Windows 10から、MSはMDM(モバイルデバイス管理)機能を内蔵実装しました、機能的には、グループポリシーの機能と重ねているところが多いです。どうやら、単純にMDMの目的であれば、グループポリシーをやめて内蔵MDMに移行する傾向が見えています。