検索
連載

【 Get-Acl 】コマンドレット――ファイル/フォルダのアクセス権を取得するWindows PowerShell基本Tips(80)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-Acl」コマンドレットを解説します。

Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コンピュータ上のファイルやフォルダに設定されたアクセス権情報を取得する「Get-Acl」コマンドレットです。

Get-Aclコマンドレットとは?

 本連載の第67回で紹介した「Grant-SmbShareAccess」コマンドレットや第70回で紹介した「Revoke-SmbShareAccess 」コマンドレットは、Windowsの共有フォルダに対するアクセス権、つまり「共有アクセス権」を設定するコマンドレットでした。

 Windowsのファイルシステムである「NTFS(NT File System)」や「ReFS(Resilient File System)」では、ファイルやフォルダに対するアクセス権(Access Control List:ACL)を設定できます。Get-Aclコマンドレットは、そのアクセス権を取得するものです。

 アクセス権は、GUIの「エクスプローラー」や「icacls」コマンドでも確認できます。しかし、スクリプトによる高度な管理を実施したい場合には、PowerShellコマンドレットによる確認が便利です。

Get-Aclコマンドレットの書式

Get-Acl [オプション]


Get-Aclコマンドレットの主なオプション

オプション 意味
-Path アクセス権情報を取得したいファイルもしくはフォルダのパスを指定する。省略可能
-Include ワイルドカード(*)を含む文字列を指定し、条件一致した項目だけを取得する。省略可能
-Exclude ワイルドカードを含む文字列を指定し、条件一致した項目を除外してその他を取得する。省略可能


カレントフォルダのアクセス権を取得する

 オプションを指定せずにGet-Aclコマンドレットを実行すると、現在のカレントフォルダのアクセス権を取得します(画面1)。なお、Get-Aclコマンドレットは管理者権限を必要としません。コマンドレットを実行するユーザーの権限の範囲内で情報を取得します。

コマンドレット実行例

Get-Acl

ALT
画面1 オプションなしでGet-Aclコマンドレットを実行し、カレントフォルダのアクセス権を取得した

 「Format-List(FL)」コマンドレットを併用すると、より詳細な情報を取得することができます(画面2)。

コマンドレット実行例

Get-Acl | FL

ALT
画面2 Format-Listコマンドレットを併用して、詳細なカレントフォルダのアクセス権を取得した


カレントフォルダにあるファイルのアクセス権を取得する

 「Path」オプションでファイルパスを指定してGet-Aclコマンドレットを実行することで、指定されたパスのファイルのアクセス権を取得できます。なお、ファイルパスにもワイルドカードが使用できるため、実行例ではカレントフォルダにある全てのファイルのアクセス権を取得しています(画面3)。

コマンドレット実行例

Get-Acl -Path *.*

ALT
画面3 「Path」オプションを指定して、カレントフォルダにある全てのファイルのアクセス権を取得した

 こちらもFormat-List(FL)コマンドレットを併用することで、より詳細な情報を取得可能です。以下の実行例では、-Pathオプションで拡張子を指定して取得しています(画面4)。

コマンドレット実行例

Get-Acl -Path *.docx | FL

ALT
画面4 カレントフォルダにある拡張子「.docx」を持つファイルのアクセス権の詳細情報を取得した


複雑な条件を設定してファイルアクセス権を取得する

 「-Exclude」オプションを使用することで、-Pathオプションだけでは指定できない抽出条件を設定できます。実行例では「.pptx」の拡張子を含むファイルで、かつファイル名に「_(アンダースコア)」が含まれていないファイルのみを抽出しました(画面5)。-Excludeオプションを使用しないGet-Aclコマンドレットの結果と比較しても、「_」が含まれるファイルが除外されていることが分かります。

コマンドレット実行例

Get-Acl -Path *.pptx -Exclude *_*

ALT
画面5 カレントフォルダにある拡張子「.pptx」のファイルで、かつファイル名に「_」を含まないファイルのアクセス権を取得した


ファイル/フォルダ以外のアクセス権を取得する

 Get-Aclコマンドレットでは、ファイルやフォルダのアクセス権だけではなく、レジストリなどのオブジェクトのアクセス権も取得できます(画面6)。

コマンドレット実行例

Get-Acl -Path HKLM:\System\CurrentControlSet\Control | FL

ALT
画面6 Get-Aclコマンドレットでは、レジストリキー「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control」のアクセス権も取得できる

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る