PowerShellで今日開いたファイルの一覧を取得する。

powershell コンピュータ
powershell
Windows10やWindows11のエクスプローラーのクイックアクセスフォルダ?に表示される「最近利用したファイル」の一覧をPowerShellで取得する方法を調べてみました。
$FolderPath = [Environment]::GetFolderPath("Recent");$wsh = New-Object -ComObject WScript.Shell;ls $FolderPath -File -Filter "*.lnk" | ? {$_.LastWriteTime -ge [DateTime](Get-Date).ToString("yyyy/MM/dd 00:00:00") } | % { $sc = $wsh.CreateShortcut($_); $sc.TargetPath }
「最近利用したファイル」は、とあるユーザーフォルダに内にショートカットファイルとして保存されています。
そのフォルダのパスは[Environment]::GetFolderPath("Recent")で取得することが出来ます。
また、日付を指定するためGet-Dateで当日の日時→時刻を00:00:00にした文字列→DateTimeへキャストとかなり回りくどい手法を採用しています。現実的には日付文字列をDateTimeでキャストしてあげる使い方をすれば任意の日付で絞り込み条件を作ることが出来ます。
次にショートカットファイルから元ファイルのパスを調べる方法としてWScript.Shellを利用します。既存の.lnkファイル(ショートカット)ファイルに対しCreateShortcut()と不穏なメソッドを実行していますが、このメソッドは既存のファイルを引数にするとショートカットファイルを読み込む振る舞いをしてくれます。読み込まれたショートカットオブジェクトのTargetPathプロパティを参照するとショートカットの元ファイルのパスを知ることが出来ます。
以上

コメント