SEブログ

【Active Directory】GPOからスクリプトパスを調査する

こんにちは!SE ブログの相馬です。

 

 

 

今回は、グループポリシーの GPO にスクリプトが設定されている場合、そのスクリプトのパスを PowerShell で調査する方法について書いてみました。

 

 

日常的に GPO を管理していますと、新規作成される GPO もあれば、不要なので削除される GPO もあるかと思います。

 

 

そんな中で、GPO を使ってスクリプトを使用している場合、GPO を削除しただけではスクリプト自身は削除されません。ですので、管理上、使用されていないスクリプトを個別に削除する必要があります。

 

 

もちろん、不要なので削除する GPO を GUI 上で見てゆく方法もありますが、少し面倒かもしれません。

 

 

それでは、どのような方法で実施すれば良いのでしょうか。小さな脳みそで考えてみました。(笑)

 

 

 

環境

 

 

Windows Server 2016 を使いました。

 

 

また、GPO は以下 5 つあります。リンクされている GPO は以下の 3 つです。

 

  • Default Domain Policy
  • Default Domain Controller Policy
  • MapNWDrives

 

 

 

 

方法

 

 

使用されていない GPO の調査

 

 

まずは、使用されていない GPO を調査する必要があるかと思います。既に使用されていない GPO を表か何かで管理されているのであれば、この作業は不要になります。

 

 

使用されていない GPO = ここでは、リンクされていない GPO として考えます。そこで使用されていない GPO を確認します。

 

 

調査手段として、以下の記事が参考になりますので見て頂けますと幸いです。

 

 

【Active Directory】OUにリンクされていないGPOを調べる

 

 

上記の手段で、リンクされていない GPO を確認する事ができます。以下はリンクされていない GPO を CSV 形式で出力したテキストファイルの中身になります。

 

 

 

 

GPO を XML ファイルでエクスポート

 

 

次に、リンクされていない GPO を XML ファイルでエクスポートする必要があります。

 

Get-GPOReport -Name "GetFoldersC" -ReportType XML -Path "C:\temp\GpoReports\GetFoldersC.xml"

 

 

ちなみにエクスポートした XML ファイルを開くと GPO の設定が XML で書かれている事がわかります。

 

 

 

 

XML ファイルからスクリプトの場所を抽出

 

 

ここでは、スクリプトファイルが格納されている場所は、以下のように ドメイン名\SYSVOL\ドメイン名\scripts を前提とします。

 

 

 

スクリプトが格納されている場所は上記の場所になり、エクスポートした XML ファイルの中にスクリプトが入っている行には、SYSVOL という大文字のみの文字列が入っていますので、その行を以下の PowerShell で抜き出してあげます。

 

 

Select-String コマンドレットを使い、大文字で SYSVOL の文字列が入っている行を検索してくれます。詳しくは以下の @IT が参考になります。

 

 

【 Select-String 】コマンドレット――ファイルからテキスト(文字列)を検索する | @IT

 

Select-String -Pattern "SYSVOL" -CaseSensitive -Path "C:\temp\GpoReports\GetFoldersC.xml"


# 実行結果

C:\temp\GpoReports\GetFoldersC.xml:165:          <q2:Command>\\soma-engineering.local\SYSVOL\soma-engineering.local\scripts\GetF
oldersC.bat></q2:Command>

 

 

これでスクリプトが使用されている事が分かりました。この結果データを コピーするなり、CSV にするなりすれば、削除するスクリプトを管理する事ができます。

 

 

以上になります。いかがでしょうか。

 

 

GPO やスクリプトを削除するというのは即ゴミ箱行きという意味ではなく、とりあえずどこかに退避しておき、いつでも元に戻せるようにしておく事をおすすめいたします。

 

 

何かのきっかけで「あのスクリプトの中身を見たい」という事があった場合に見る事が出来ますし、スクリプト自体はファイルサイズとしては凄い大きくないと思うので、ストレージの使用量を圧迫する事は無いかと思います。

 

 

それでは最後までお読みいただきありがとうございました!