質問

2015年10月20日 13時36分
  • icacls権限書き出しでファイルを除外するには

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

icaclsコマンドを使って
ファイルサーバーから権限をテキスト化して作成したいのですが、
ここで、フォルダだけの権限状態を調べたいと考えています。
個々のファイルは除外したいのですがその方法が分かりませんので
ご教示頂けると助かります。

現在のコマンド
icacls サーバー名\ドライブ名\ /t /c | Out-File -FilePath 保存先サーバー名\保存先フォルダ名\保存テキスト名

どちらにせよ/tが入ることで回帰的にフォルダもファイルも含めてしまうので困っています。
また、目視的に分かるリストを作成したいのでsaveは使っていません。
宜しくお願いします。

3件の回答があります

回答

私も icacls でファイルが混じり込むのは困ったな と思ったものです

仕方がないので 結果をExcelに取り込んで 「名前に . があればファイル なければフォルダ」と判定して ファイルを除外しました それをVBAに組みました
(VBAは長くなるのでここには載せませんが  結果をテキストで取り込む。 列を挿入 ドライブはU:\ と決めてるので行の頭が U:\ だったらそこから次の U:\ が出るまでは挿入した列に ファイル名(といってもそのセル全体)をコピー。 そこに . が含まれたら削除対象 ... という具合です)
でも、これですと フォルダ名に .をつけられると ダメですけどね(そこはルールで縛る) 逆に拡張子のないファイルもダメですけどね。  まぁ 完璧には行かないっす。

もっといい方法があったら教えてくださいな。

2015年10月21日 10時44分

回答

desatoさん
ありがとうございます。
やっぱり個々の指定除外以外に方法ってないんですね。
自分も考えたのですが、ファイルを対象に絞り 拡張子比較などしてから除外するなどできるかもしれませんのでちょっと独自に探してみることにします。

2015年10月21日 12時01分

回答

icaclsを組み合わせての方法はやっぱりダメでした。
以下のコマンドレットで取れたので一応載せておきます。

Get-Childitem "C:\" -recurse | Where-Object {$_.Attributes -match "Directory"} | Get-acl | Out-File -FilePath D:\AccessRight.csv

"C:\"  は取得先PATH
D:\ はテキスト化した権限CSVを保存するPATH

詳細説明
Get-Childitem = 対象PATHのファイル・ディレクトリを取得
Where-Object = Get-childitemの取得結果からディレクトリに対象を限定
Get-ACL = Where-Objectから取得したディレクトリ権限を抽出
Out-File = 処理内容をCSV書き出す

2015年10月30日 11時19分

あなたもコメントしましょう!