hack のためのネタ帳, etc,,,

×

状況

初版の事象により、Windows のゴミ箱内にあるファイルの一覧を取得したいのだが、
ゴミ箱内のファイルは、ファイル名がランダム化されてる事に加えて、
ゴミ箱を直接見た際に確認出来る元の場所と削除日時等の属性がは bash や PowerShell から ls しただけでは確認出来ない。

Windows ゴミ箱 ファイル一覧」でググってみたところ以下のページを見つけた。
どううも属性を得るには COM 叩かないといけないらしい。
以下の VBS が参考になりそうとの事
試してみたがなんか上手く動かないがとりあえずこれを参考に、Copilot らから助言も得ながら PowerShell に落とし込んでみた。

上記 VBS では削除日時を
$parent.GetDetailsOf($file, 2)
から取ってるが、これ秒が取れなくて分単位になってる事に加えて、なぜか U+200E LEFT-TO-RIGHT MARKU+200F RIGHT-TO-LEFT MARK が変なところに入る。

仕方ないので「extendedproperty trush windows deleted date」でググってみたところ
$item.Properties.GetProperty("DateDeleted")
みたいなこと書かれていた。
これも取れなかったんだけど、$item.ExtendedProperty("DateDeleted") を試してみると UTC の日時が取得可能だった。

あと、$item.IsFolder が地味に罠だったというか、.zip 等の explorer.exe で開けるアーカイブも True 扱いされてしまう。
中身のファイル一覧はフォルダ同様で PowerShell からも取得できるのだが、
$parent.GetDetailsOf($file, x)
で取れる項目が違ってる。

$file に $null 与え解けば項目名が得られるので、
多少手間かければ取れないわけではなさそうな感じ。

まぁ、取れれば取れたでそれはそれで便利かもしれないのだが、
ちょっとそこまでする元気なかったので、とりあえず今回は ignore しといた。

解法

とりあえず、以下の成果物をこさえた。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます