4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GPOで設定した値をコマンドライン(PowerShell)で確認する

Last updated at Posted at 2020-05-18

#背景
複数のGPOで同一の設定項目の内容を調べる際に、GUI操作(画面遷移)が面倒だったので、コマンドライン上で比較できれば効率的かなと思い、調べてみました。
※とはいえ、あんまりPowershellはそこまで詳しくないので、ポチポチ叩いてたらうまくいった(うまくいってしまった)
#GPOで設定した値をコマンドライン(PowerShell)で確認する。
##GPOをXMLファイルに出力する。
GroupPolicyをpowershellにインポート後、
get-GPOReportを使って、対象のGPOをXMLファイルに出力する。

powershell
> Import-Module GroupPolicy
> Get-GPOReport -name "GPO名" -reportType XML -path "出力ファイル名"

##前段で出力したXMLファイルを読み込み、標準出力させる。
Get-Contentを使って、変数XMLにXMLファイルを代入する。
あとは、変数XMLから適宜値をポチポチ叩いていき、欲しい値を探す。

powershell
#XMLファイルを$XMLに代入する。
> $XML = [xml](Get-Content "出力ファイル名")

#コンピュータの構成であれば
> $XML.GPO.Computer.~~~

#ユーザーの構成であれば
> $XML.GPO.User.~~~

##Policyとか、同一階層に複数ある場合
どうやら、階層を「.(ドット)」で区切ってあげると、配下の構成が参照できるようで。
しかしながら、policyより下の階層を参照しようとしたら、標準出力が出なくなってしまった。

どうやら、Policyが同一階層に複数存在する時は添字をつけてあげないと、うまく見れないようです。
まぁ、機械からすれば、判定できないから当然そうだよね笑

powershell
#Policyが一つしかない時は添字がなくてもOK
> $XML.GPO.Computer. (〜省略〜).Policy.~~~
#同一階層にPolicyが複数ある時は添字をつけてあげると、うまく読み込んでくれます。ないと標準出力なし。
> $XML.GPO.Computer. (〜省略〜).Policy[0].~~~

#標準出力した値をGrepする
Where-Obbjectでパイプしてあげるといい感じ。

powershell
> $XML.GPO.Computer. (〜省略〜).Policy[0].ListBox.Value.Element |
                                           where {$_.data -like "*検索文字列*"}

##最後に
なんかいいメモないかなと考えてて、よくみるQiitaで試しに書いてみようと思ったら、思いの外、自分のメモ用としては十分みやすく書けるなと思いました。

#参考にさせていただいたサイト
https://activedirectorymania.vamdemicsystem.black/get-gporeport/

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?