PowerShell を使用してフォルダーにアクセス許可を再帰的に設定する

Rohan Timalsina 2023年6月21日
  1. PowerShell を使用してフォルダーのアクセス許可を再帰的に取得する
  2. PowerShell を使用してフォルダーに再帰的にアクセス許可を設定する
PowerShell を使用してフォルダーにアクセス許可を再帰的に設定する

ACL (アクセス制御リスト) は、ファイルまたはリソースにアクセスするためのユーザーの許可とユーザー グループを表します。 これは、アクセス制御エントリ (ACE) の順序付きリストです。

ACL の各 ACE は、許可、拒否、または監査されるアクセス権を定義します。 オブジェクトのセキュリティ記述子には、DACL と SACL の 2 種類の ACL を含めることができます。

Windows で NTFS アクセス許可を使用する場合、フォルダーのアクセス許可を再帰的に変更しなければならない場合があります。 GUI は、PowerShell スクリプトよりも時間がかかり、複雑になります。

このチュートリアルでは、PowerShell を使用してフォルダーにアクセス許可を再帰的に設定する方法を説明します。

PowerShell を使用してフォルダーのアクセス許可を再帰的に取得する

PowerShell で ACL 権限を管理するための主なコマンドレットは、Get-AclSet-Acl の 2つです。

Get-Acl コマンドレットは、ファイルまたはリソースのアクセス制御リスト (ACL) を含むセキュリティ記述子を取得します。

Get-Acl は、C:\New ディレクトリのセキュリティ記述子を取得します。

Get-Acl C:\New

出力:

Directory: C:\
Path Owner          Access
---- -----          ------
New  DelftStack\rhntm BUILTIN\Administrators Allow  FullControl...

Get-Acl コマンドレットは、すべてのディレクトリとサブディレクトリのアクセス許可を返すわけではありません。 フォルダーのアクセス許可を再帰的に取得するには、-Recurse パラメーターを指定して Get-ChildItem コマンドレットを使用する必要があります。

Get-ChildItem "C:\pc" -Recurse | Get-ACL

PowerShell を使用してフォルダーに再帰的にアクセス許可を設定する

Set-Acl は、ファイルまたはリソースのセキュリティ記述子を変更します。 -AclObject パラメータの値として指定されたセキュリティ記述子を適用します。

次のコマンドは、C:\New ディレクトリのセキュリティ記述子から C:\pc ディレクトリのセキュリティ記述子に値をコピーします。

$new = Get-Acl -Path "C:\New"
Set-Acl -Path "C:\pc" -AclObject $new

最初のコマンドは、C:\New ディレクトリのセキュリティ記述子を取得し、$new 変数に格納します。 2 番目のコマンドで、Set-AclC:\New ディレクトリの ACL の値を $new の値に変更します。

次のスクリプトは、フォルダーの既存のアクセス許可に新しい ACL 規則を再帰的に追加します。

$acl = Get-Acl -Path "C:\pc"
$ace = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("testuser", "Read", "Allow")
$acl.AddAccessRule($ace)
Set-Acl -Path "C:\pc" -AclObject $acl

最初のコマンドは、既存の ACL ルールを取得します。 2 番目のコマンドは、適用する新しい FileSystemAccessRule を作成します。

3 番目のコマンドは、フォルダーの既存のアクセス許可に新しい ACL 規則を追加します。 4 番目のコマンドは、Set-Acl を使用して、新しい ACL をフォルダーに適用します。

次のコマンドを使用して、すべてのユーザーの権限を表示できます。

(Get-ACL -Path "C:\pc").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType

出力:

IdentityReference  FileSystemRights AccessControlType
-----------------  ---------------- -----------------
DelftStack\rhntm          FullControl             Allow
DelftStack\testuser Read, Synchronize             Allow

システム管理者は、スクリプトを使用して多くのフォルダーとファイルの NTFS アクセス許可を構成し、プロセスをより迅速かつ簡単にします。 この記事が、PowerShell を使用してフォルダーに再帰的にアクセス許可を設定する方法を理解するのに役立つことを願っています。

PowerShell の詳細な NTFS アクセス許可の種類については、この投稿 を参照してください。

著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - PowerShell Folder