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

Active Directory

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

2018年9月15日

こんにちは!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 を確認します。

 

 

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

 

 

 

 

上記の手段で、リンクされていない 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 やスクリプトを削除するというのは即ゴミ箱行きという意味ではなく、とりあえずどこかに退避しておき、いつでも元に戻せるようにしておく事をおすすめいたします。

 

 

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

 

 

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

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りでマイペースな人です。

人気記事

1

こんにちは!SE ブログの相馬です。       今回は、PC に適用されている GPO を確認する方法について書きました。     グループポリシー ...

2

こんにちは!SE ブログの相馬です。       今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは ...

3

こんにちは!SE ブログの相馬です。       今回は、グループポリシーを使って、特定のコンピューターに対して、ドメインユーザーに Administrators 権限を ...

4

こんにちは!SE ブログの相馬です。       今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 ...

5

こんにちは!SEブログの相馬です。       今回は、ユーザープロファイルを削除する方法について書いてみました。     1 台の PC を複数人で ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!SE ブログの相馬です。       今回は、Windows Server 2016 で NTP サーバーと同期する方法について書きました。   & ...

-Active Directory
-,