このエントリーをはてなブックマークに追加


PowerShellで指定したディレクトリ配下にある読み取り専用ファイル・フォルダの一覧を取得する

「このフォルダ配下のいくつかのファイルやフォルダ、確か読み取り専用に変更してしまったけど、どのファイルだったか覚えていない!」
「読み取り専用になっているファイルとフォルダの一覧が欲しいなぁ」と思われた方、本資料が役に立つと思います。


関連記事

ファイルおよびフォルダが読み取り専用になっているファイル一覧を取得する

以下のように「読み取り専用」属性があるファイルやフォルダのフルパス名を表示する関数になります。

01.png

以下の関数(スクリプト)は指定したフォルダ配下に存在するファイルおよびフォルダに対し、読み取り専用になっているかどうかを調べ、
読み取り専用になている場合は、画面にそのファイルのフルパスを出力します。
また、単一のファイルを指定しても動作します。

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 ディレクトリまたはファイル

実際に以下のようなディレクトリを作成し、いくつか読み取り専用にしました。
コマンドプロンプトのtreeコマンドを使ってツリー表示しています。

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操作をしてもできません。
attribコマンドで今回はフォルダを読み取り専用にしました。
以下にattribコマンドを使ってフォルダのみ読み取り専用にする方法を公開しています。

以上、PowerShellで読み取り専用のファイルおよびフォルダ一覧を表示するPowershellスクリプトでした。



添付ファイル: file01.png 344件 [詳細] filesample.zip 291件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-06 (土) 17:58:56