デスクトップとノートPCで適用するグループポリシーを変える方法 (WMIフィルター)

この記事は情報が古くなっています。Windows 10ではこの方法による判別ができなくなっていますのでご注意ください。

グループポリシーを、デスクトップとノートPCで別のものを適用したいときがあります。 そのポリシーが「コンピューターの構成」内のポリシーであれば、デスクトップPCとノートPCとを別々の組織単位(OU)に所属させる、などの方法で行うことができます。

しかし、「ユーザーの構成」について、デスクトップとノートPCで別のGPOを適用させたいときはちょっとした工夫が必要です。

例えば、こんなシナリオで有効です。 「デスクトップPCでは、マイドキュメントフォルダーを[フォルダーリダイレクト]を使ってネットワーク上に置きたいが、ノートPCでは、ユーザーフォルダーをローカルのままにしておきたい

シナリオはどんなものであっても手順は変わりません。

方法

グループポリシーを特定の条件に当てはまるときだけ適用させるには、GPOの「WMIフィルター」を使うことができます。WMIは、ハードウェアやOSといったシステム情報へアクセスできるインタフェースです。

ノートPCとデスクトップの大きな違いは、基本的にはバッテリーの有無であると思います。 そこで、バッテリーの状態を取得するWMIクエリ(WQLというのかな)「select * from Win32_Battery where BatteryStatus <> "0"」を使って、判別することにします。 ノートPC(バッテリー搭載)の場合、BatteryStatus は0以外の値を返します。すなわち、「<> “0”」という条件文(?)にすることで、このWMIクエリはノートPCのみでTrueを返します。

ちなみに、デスクトップではBatteryStatusはそもそも値を返さないので、BatteryStatus = "0" でデスクトップをフィルターすることはできません。ですので、「GPO の適用順序 (全クライアント PC に対する GPO → ノート PC に対する GPO の順) でやりくりすれば良い」とのことです。

※一部サイトでは、WMIクエリを「Select * From Win32_SystemEnclosure Where ChassisTypes >= 8 and ChassisTypes <=11」のようにすることでノートPCのみに適用できると書いてありますが、これは誤りと思われます。というのは、なぜかChassisTypesはarray型で返すからです。グループポリシーのWMIクエリでは、配列の要素を拾うというのはできないようで、この方法は使えないと思われます。

手順

  1. [グループポリシーの管理]を開きます。
  2. はじめに、WMIフィルターを作成します。 フォルダーツリーの”WMIフィルター”を右クリックして、[新規]をクリックします。 image
  3. “新しい WMI フィルター”という画面が出ますので、”名前”を適宜入力します。
  4. 次に、[追加]をクリックすると、”WMI クエリ”という画面が出ますので、”クエリ”欄に先ほどのWQLを入力します(画像参照) image
  5. OK,保存の順にクリックし、画面を閉じます。
  6. 次に、作成したWMIフィルターをGPOに紐づけます。 ノートPCだけに適用させたいGPOを開きます。
  7. 画面下部の”WMI フィルター処理”の枠内の”<なし>”と書いてある部分をクリックし、先ほど適用したフィルターを選択します。 image
  8. 以上で完了です。これで、このGPOは、ノートPCのみに適用されることになります。