WindowsでRDSを管理している際に,PowerShellでユーザープロファイルの一覧を取得したい場合があるかも知れません。
そして,最近アクセスがあった順に並べ替え,アクティブなプロファイルと,古い不要なプロファイルを見分けたいということもあるでしょう。
そのような場合,WMIでユーザープロファイルにアクセスして最終アクセス日時の要素を取り出して…ということを考えるかも知れませんが,もっと簡単に一覧を出力することができます。
PowerShellで最も簡単にユーザープロファイルの一覧を出力する方法は以下の通りです。
ユーザープロファイルとは何かを考える
C:\Users配下にあるフォルダが,ユーザープロファイルと同義と考えてもよいでしょう。
そして,ユーザープロファイルにアクセスがあると,そのフォルダの最終更新日がアップデートされます。
ですので,C:\Usersに遷移して,PowerShellからdirコマンドを叩けば,ユーザーの一覧を出力できるのです。
CSVで出力したい場合
やはり一覧をCSVで取得したいという場合には,以下のようにPowerShellのGet-ChildItemコマンドレットを使いましょう。
そして,LastAccessTimeで降順にソートし,CSVにエクスポートしています。
cd C:\Users
Get-ChildItem | Sort-Object LastAccessTime -Descending | Export-Csv UserList.csv
このように,PowerShellの段階で降順にソートしておくことには意味があります。
なぜなら,出力される日付は時刻を含んだ文字列のフォーマットになっているため,Excelで降順に並べ替えようとしても,うまくソートされないのです。
以上,PowerShellでユーザープロファイルの一覧を出力し,アクセス日時順でソートする方法でした。
コメント