PowerShell の Security モジュール (Microsoft.PowerShell.Security) の Get-Acl コマンドレットは、ファイルまたはフォルダー許可(別名 Access Control List または ACL)を取得するのに素晴らしい仕事をします。 しかし、デフォルトの出力から有用な情報を得るには、少し慣れが必要です。
その代わりに、ファイル、フォルダー、またはその他のリソースのセキュリティ タブが何を表示しているかを、ファイル エクスプローラーの UI や複数のクリックを使用せずに確認できるようになれば素晴らしいことです。 ファイルまたはフォルダーのアクセス権を取得する
以下は、まさにそのためのワンライナーです:
(get-acl <folder name>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto
The output:
The Get-Permissions function
出力をより読みやすくしたいですか? ここでは、カスタム ラベル(表の各列のタイトル)を使用する PowerShell 関数を紹介します。
PowerShell スクリプトとして保存するか、PowerShell プロファイルに追加して常に利用できるようにします。
123456789 |
function Get-Permissions ($folder) { (get-acl $folder).access| select `@{Label="Identity";Expression={$_.IdentityReference}}, `@{Label="Right";Expression={$_.FileSystemRights}}, `@{Label="Access";Expression={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.FileSystemRights}}, `@{Label="Right";Expression={$_.FileControlType}}, `@{Label="FileReference";Expression={$_.IsInherited}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}, `@{Label="Propagation Flags";Expression={$_.PropagationFlags}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}. |ft -auto} |
その情報が必要ない場合、2つの継承関連プロパティを省略することが可能です。
Get-Permissions c:\myfolder
The output:
dir, ls または gci コマンドからの出力もパイプできます(これらはすべて Get-ChildItem cmdlet の PowerShell エイリアスです)。
dir <path> | % {Get-Permissions -path $_.fullname}
A function to open file or folder Properties in Explorer
本当に File Explorer GUI で権限を確認したい場合は、この関数を使ってファイルまたはフォルダー のプロパティ > General ページを開くとよいでしょう。 (セキュリティタブを直接開く方法は見つかっていません。 この方法を知っている場合は、投稿コメントで共有してください)。
12345678910111213141516171819202122 |
function Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path)) { Write-Host "$path not found. 有効なファイルまたはフォルダのパスを指定してください。" -foregroundcolor 赤 return }. $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Found folder $path...". プロパティの取得"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Found file $path.... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}} |
あとは Get-Properties <Folder of file name > でシェルからファイルまたはフォルダのプロパティページをすぐに開いてみてください。
Figure 2: Get-Properties 関数を使用して、PowerShell からファイルまたはフォルダーのプロパティをすばやく開く
File System Security PowerShell Module
Microsoft PFE Raimund Andrée はしばらく前に File System Security PowerShell モジュールを発表しました。 このモジュールは、PowerShell を使用してファイル システムのパーミッションを管理するためのいくつかの便利なコマンドレットを追加します。 また、彼の対応するブログ記事 Weekend Scripter もご覧ください。 PowerShell を使用して NTFS 権限を取得、追加、および削除する」および「NTFSSecurity チュートリアル 2 – NTFS 継承の管理と特権の使用」
Tags
PowerShell Scripts Security Windows
もご覧ください。