PowerShell を使用して NTFS アクセス許可を管理する

Marion Paul Kenneth Mendoza 2024年2月15日
  1. PowerShell で Get-ACL を使用して NTFS アクセス許可を表示する
  2. PowerShell で NTFS アクセス許可を表示する
  3. PowerShell でファイルの ACL を再帰的に取得する
PowerShell を使用して NTFS アクセス許可を管理する

GUI を使用して NTFS アクセス許可を管理するのは、特に多数のユーザーまたはグループを操作する場合に時間がかかります。 ただし、特定の PowerShell コマンドレットは、NTFS アクセス許可を取得して割り当てることができます。

この記事では、Get-ACL コマンドを使用して NTFS アクセス許可を管理する方法について説明します。

PowerShell で Get-ACL を使用して NTFS アクセス許可を表示する

アクセス制御リスト (ACL) はアクセス制御エントリ (ACE) のリストであり、各リストには、トラスティを識別してアクセス権を指定する ACE が含まれています。

セキュリティ保護可能なオブジェクトのセキュリティ記述子は、DACL または SACL のいずれかになります。 DACL はアクセスを許可または拒否するユーザーとグループを識別し、SACL はアクセスを制御します。

PowerShell では、Get-ACL コマンドレットを使用して NTFS アクセス許可をすばやく表示できます。 次のセクションでは、コマンドレットを使用してファイルまたはフォルダーの NTFS アクセス許可を表示する方法について説明します。

PowerShell で NTFS アクセス許可を表示する

従来、フォルダを右クリックし、[プロパティ] をクリックして、[セキュリティ] タブを選択し、[詳細設定] ボタンをクリックして、ACL を表示していました。 以下に、GUI が権限を表示する方法の例を示します。

高度なセキュリティ設定を使用した ACL

この記事の次の例では、パスを変数 $dir に割り当てます。

コード例:

$dir = "C:\Windows\Temp"
Get-Acl -Path $dir

出力:

Path Owner                      Access
---- -----                      ------
Temp DESKTOP-7GI1260\KentMarion BUILTIN\Administrators Allow  FullControl...

ただし、-Path パラメーターを指定して Get-Acl コマンドを実行すると、フォルダー レベルのアクセス制御リストのみが表示および出力されます。 ファイル レベルでアクセス制御リストを確認したい場合はどうすればよいでしょうか。

PowerShell でファイルの ACL を再帰的に取得する

PowerShell の有利な機能の 1つは、パイプラインの使用です。 PowerShell パイプラインは、パイプライン演算子 (|) を使用して一連のいくつかのコマンドを結合します。

パイプライン メソッドを使用して、ファイル レベルでアクセス制御リストを取得できます。

このシナリオを実現するには、コマンド Get-ChildItem を使用する必要があります。 Get-ChildItem コマンドは、ディレクトリ内のすべてのファイルとフォルダーをフェッチします。

例として、以前の $dir 変数を使用してみましょう。

コード例:

$dir = "C:\Windows\Temp"
Get-ChildItem $dir -Recurse | Get-Acl | Format-List | Out-File "C:\PS\output.txt"

上記の例では、-Recurse スイッチ パラメータは、すべてのファイルをループして Get-Acl コマンドを実行するために重要です。 上記のスニペットを実行すると、Temp フォルダー内のすべてのファイルのアクセス制御リストのアクセス許可をすべて取得できます。

また、特に対象フォルダに多数のファイルがある場合は、Out-File コマンドを使用してすべての詳細を 1つのテキスト ファイルにエクスポートすることをお勧めします。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn