もくじ
📝 はじめに
PowerShellでファイルやフォルダの管理をしていると、
「特定のユーザーだけ操作できるようにしたい」
「アクセス権を一括で変更したい」
「GUIではなくスクリプトで権限を統一したい」
という場面に出会います。
こうしたアクセス権の設定・変更を行うためのコマンドが
Set-Acl です。
Get-Acl と組み合わせることで、
PowerShellから柔軟にアクセス権を制御できます。
- フォルダのアクセス権を変更したい
- 複数ファイルに同じ権限を設定したい
- 権限設定をスクリプトで自動化したい
✅ このコマンドでできること(要点)
- ファイル・フォルダのアクセス権を変更できる
- ユーザーやグループごとの権限を設定できる
- ACLをコピーして一括適用できる
- 管理作業を自動化できる
✅ Set-Acl でできること
Set-Acl は、
Get-Acl で取得した
アクセス制御リスト(ACL)を
別のファイルやフォルダに適用するためのコマンドです。
単体で使うことは少なく、
「取得 → 編集 → 適用」
という流れで使うのが基本になります。
🧩 基本構文
Set-Acl -Path 対象パス -AclObject ACLオブジェクト
事前に取得・編集した ACL オブジェクトを指定します。
▶ 基本的な使い方(まずこれだけ)
🔹 別のフォルダに同じアクセス権を適用する
$acl = Get-Acl C:\Source
Set-Acl -Path C:\Target -AclObject $acl
C:\Source のアクセス権を
C:\Target にそのまま適用します。
🔹 ファイルにアクセス権を適用する
$acl = Get-Acl C:\Template\file.txt
Set-Acl -Path C:\Work\file.txt -AclObject $acl
権限テンプレートとして使うケースです。
🛠 よく使われる指定例
🔹 複数フォルダに同じ権限を設定する
$acl = Get-Acl C:\Base
Get-ChildItem C:\Projects -Directory |
ForEach-Object {
Set-Acl $_.FullName $acl
}
一括で権限を揃えたい場合に有効です。
🔹 権限変更後に確認する
Get-Acl C:\Target | Select-Object -ExpandProperty Access
変更結果を必ず確認しましょう。
💼 実務でよく使う使用例(応用)
🔹 作業用フォルダに統一した権限を付与する
$acl = Get-Acl C:\WorkTemplate
Set-Acl -Path C:\Work\ProjectA -AclObject $acl
Set-Acl -Path C:\Work\ProjectB -AclObject $acl
🔹 新規作成後にアクセス権を調整する
New-Item C:\Share\Data -ItemType Directory
$acl = Get-Acl C:\Share\Template
Set-Acl C:\Share\Data $acl
- Get-Acl で権限取得
- Get-ChildItem で一括処理
- テンプレートACLを作って再利用
🧩 よくある勘違い・つまずきポイント
- Set-Acl 単体では権限内容を指定できない
- 誤ったACLを適用するとアクセス不能になる
- 管理者権限が必要な場合がある
- 継承設定も含めてコピーされる
- -Force では権限問題は解決しない
🔄 cmdとの違いについて
cmd では icacls を使って
直接権限を指定しますが、
PowerShell では
Get-Acl / Set-Acl によって
権限をオブジェクトとして扱うのが特徴です。
その分、再利用性や自動化に優れています。
⚠ エラー・うまく動かないときの確認ポイント
- 適用先パスが正しいか
- 管理者権限で実行しているか
- 誤ったACLを使っていないか
- 継承設定の影響を受けていないか
🧠 注意点
Set-Acl は
システムや共有フォルダの安全性に
直接影響する操作です。
実務では必ず
テスト環境で検証 → 本番適用
という手順を踏むようにしましょう。
📌 まとめ
- Set-Acl はアクセス権を設定・適用するコマンド
- Get-Acl とセットで使うのが基本
- 一括設定・自動化に非常に強力
- 誤操作防止のため慎重な運用が必要
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- アクセス権を変更したい
- フォルダの権限を統一したい
- 権限設定を自動化したい
- 共有フォルダを管理したい
- エラーや実行できない原因を調べたい
- PowerShellで管理作業を効率化したい
- 安全に権限を設定したい
