更改案件のデータ移行対象を調べる作業で、get-acl コマンドがめっちゃ便利だった件。

こんな状況でした

C:\Users\Public\script というフォルダがあって、その中に運用で使っていそうなんだけど、それぞれ誰が管理しているのか分からないサブフォルダがたくさんあります…
(XXX は固有名称をマスクしました)

PS > ls C:\Users\Public\script  

    ディレクトリ: C:\Users\Public\script  

Mode                LastWriteTime     Length Name  
----                -------------     ------ ----  
d----        2016/11/29     13:19            0.tool  
d----        2017/04/05     17:40            eventCreate_Test  
d----        2018/03/07     11:03            getXXXlevelXY  
d----        2019/01/08     11:22            getXXXlevelXY2  
d----        2018/08/31     18:57            XXXDistributer  
d----        2018/02/16     18:34            XXX_auto_login  
d----        2018/01/30     15:01            XXX_tool  
d----        2016/09/16     11:00            XXXユーザ件数bat  
d----        2017/07/21     15:57            XXX情報取得  
d----        2018/08/27     14:26            schtasks_test  
d----        2018/09/21     16:54            temp_ment  
d----        2017/07/13     10:40            【本物】XXX運用ツール  
d----        2017/12/27     14:20            データ抽出  
d----        2018/06/27     10:29            XXXデータの抽出について  
d----        2017/07/13     11:11            XXX情報の抽出について  
d----        2016/10/26     17:35            XXX件数集計  
d----        2016/10/19     14:11            XXX変更用確認データ取得  
d----        2019/01/23     18:16            XXX待ちチェッカー  
d----        2018/03/19     15:14            業務実態調査のための操作ログ取得  
d----        2016/12/06     18:41            業務実態調査のための操作ログ取得cq(操作区分-XXX  
d----        2017/03/02     15:39            業務実態調査のための操作ログ集計  
d----        2018/08/29      9:49            調査用SQL  

これって、新システムでも使うのかな? 使いそうだよなあ。。。
移行は使っている人が各自でやってくれるのかな?
そもそも誰も管理してなかったら、移行漏れになってしまうのでは?

幸い、このサーバーは作業者ひとりひとりに割当てられた個人名のユーザーアカウントを使っているので、フォルダの権限で所有者になっているユーザーを調べれば、フォルダを作った人が解ります。
そう、各フォルダを作った人が誰かが解れば、誰に聞けばいいかわかる・・・・!!

Hey! Scripting Guy, 今回もお世話になります

PowerShell の Get-Acl コマンドでアクセス権絡みの情報を出力できるそうで。
参考: Windows PowerShell を使用してファイルの所有者を特定する方法はありますか

PS > get-acl C:\Users\Public\script\* | select PsChildName,Owner  

PSChildName                                             Owner  
-----------                                             -----  
0.tool                                                  ホスト名\ユーザー1  
eventCreate_Test                                        ホスト名\ユーザー2  
getXXXlevelXY                                           ホスト名\ユーザー3  
getXXXlevelXY2                                          ホスト名\ユーザー3  
XXXDistributer                                          ホスト名\ユーザー2  
XXX_auto_login                                          ホスト名\ユーザー4  
mdm_tool                                                ホスト名\ユーザー2  
XXXユーザ件数bat                                        ホスト名\ユーザー4  
XXX情報取得                                             ホスト名\ユーザー5  
schtasks_tes                                            ホスト名\ユーザー2  
temp_ment                                               ホスト名\ユーザー2  
【本物】XXX運用ツール                                   ホスト名\ユーザー2  
データ抽出                                              ホスト名\ユーザー3  
XXXデータの抽出について                                 ホスト名\ユーザー3  
XXX情報の抽出について                                   ホスト名\ユーザー3  
XXX件数集計                                             ホスト名\ユーザー1  
XXX変更用確認データ取得                                 ホスト名\ユーザー1  
XXX待ちチェッカー                                       ホスト名\ユーザー6  
業務実態調査のための操作ログ取得                        ホスト名\ユーザー1  
業務実態調査のための操作ログ取得cq(操作区分-XXX         ホスト名\ユーザー3  
業務実態調査のための操作ログ集計                        ホスト名\ユーザー1  
調査用SQL                                               ホスト名\ユーザー2  

わー、べんり♡
各ユーザーアカウントの該当者にヒアリングして、その後スムーズに進むかは別の話。。。