PowerShellで指定したディレクトリ配下にある読み取り専用ファイル・フォルダの一覧を取得する †「このフォルダ配下のいくつかのファイルやフォルダ、確か読み取り専用に変更してしまったけど、どのファイルだったか覚えていない!」 関連記事 †
ファイルおよびフォルダが読み取り専用になっているファイル一覧を取得する †以下のように「読み取り専用」属性があるファイルやフォルダのフルパス名を表示する関数になります。 以下の関数(スクリプト)は指定したフォルダ配下に存在するファイルおよびフォルダに対し、読み取り専用になっているかどうかを調べ、 function Get-ReadOnlyList($pathtofile) { if ([String]::IsNullOrEmpty($pathtofile)) { Write-Host "ERROR: argument is invalid." return $FALSE } if (!(Test-Path($pathtofile))) { Write-Host "ERROR: file or directory not found." return $FALSE } Get-ChildItem -Recurse $pathtofile | % { if((Get-ItemProperty( $_.FullName )).Attributes.ToString().Contains("ReadOnly")) { $_.FullName } } } 実行例 †本関数の使い方は以下の構文になります。 Get-ReadOnlyList ディレクトリまたはファイル 実際に以下のようなディレクトリを作成し、いくつか読み取り専用にしました。 D:\>tree /f test フォルダー パスの一覧: ボリューム SD32GB ボリューム シリアル番号は 1234-1234 です D:\TEST │ a.txt │ b.txt │ c.txt │ d.txt │ ├─a │ aa.txt │ ab.txt │ └─b ba.txt bb.txt 上記の a.txt, a\aa.txt, b\bb.txt, a を読み取り専用にし、今回紹介した関数(スクリプト)を実行してみます。 PS D:\> Get-ReadOnlyList .\test D:\test\a D:\test\a.txt D:\test\a\aa.txt D:\test\b\bb.txt ちなみにフォルダのみ読み取り専用にするには、GUI操作をしてもできません。 以上、PowerShellで読み取り専用のファイルおよびフォルダ一覧を表示するPowershellスクリプトでした。 |