QA@IT

PowerShellでフォルダーのセキュリティ情報取得

5495 PV

Windowsのフォルダーのプロパティでセキュリティの詳細設定を見ることができますよね
フォルダ→プロパティ→セキュリティタブ→詳細設定

ここで表示されている「継承元」をPowerShellで取得したいのですが、どういうふうにすればできるかご存知の方お教え願います

回答

NTFSSecurityモジュールを入れると簡単にできるようです。

PowerShell Gallery | NTFSSecurity 4.2.3

こっちで試してみたこと。

インストール

Install-Module -Name NTFSSecurity -RequiredVersion 4.2.3

「継承元」を取得

Get-NTFSAccess <フォルダ名 or ファイル名>  | Select-Object InheritedFrom

試した環境

  • Windows 10
  • PowerShell 5.1

追記1
NTFSSecurityで「継承元」が取れるのはよいとして、NTFSSecurityがどうやって「継承元」を取得しているのか、という点が気になったので、ソースを見たところ下記のWin32 APIを呼んでいるようです。

GetInheritanceSource function (Windows)

これが

INHERITED_FROM structure (Windows)

の配列(ACE毎なので)を返してくれるようですね。

追記2
Windows 7で動くか気になったので試してみたところ問題ないようです。プロジェクトのホームhttps://github.com/raandree/NTFSSecurityには下のように2種類のインストール方法が載っていますが、今回は1の方でやってみました。

Installation
You have two options:
1.Download the latest release from the releases section.
2.Download the module from the PowerShell Gallery: Install-Module -Name NTFSSecurity

Releasesセクションから最新(バージョン4.2.3)のNTFSSecurity.zipを落として所定のフォルダに展開し、Import-Module NTFSSecurityでインポートしたところ、「継承元」の取得は簡単にできました。

試した環境

  • Windows 7
  • PowerShell 2.0

インストール方法の詳細はHow to installあたりを見て下さい。

編集 履歴 (3)
ウォッチ

この質問への回答やコメントをメールでお知らせします。