PowerShellでゴミ箱を操作するには

| 2009年3月18日水曜日
まずは、準備。
> $shell = New-Object -comObject Shell.Application
> $shell.NameSpace(10)

Title                      : ごみ箱
Application                : System.__ComObject
Parent                     :
ParentFolder               : System.__ComObject
Self                       : System.__ComObject
OfflineStatus              :
HaveToShowWebViewBarricade : False
ShowWebViewBarricade       : False

ゴミ箱の中のファイル数を取得する。
> $shell.NameSpace(10).Items().Count

3

ごみ箱の中のファイル名の一覧を取得する。
> $shell.NameSpace(10).Items() | % { $_.Name }

新規 Microsoft Office Word 文書.docx
新しいテキスト ドキュメント.txt
新規 Microsoft Office Excel ワークシート.xlsx

一つ目のファイルの情報を取得する。ここでは、$itemに入れている。
> $item = $shell.NameSpace(10).Items().Item(0)
> $item

Application  : System.__ComObject
Parent       : System.__ComObject
Name         : 新規 Microsoft Office Word 文書.docx
Path         : C:\$Recycle.Bin\S-1-5-21-2464054850-802308169-2795062852-1001\$R95HRWN.docx
GetLink      :
GetFolder    : System.__ComObject
IsLink       : False
IsFolder     : False
IsFileSystem : True
IsBrowsable  : False
ModifyDate   : 2009/03/18 21:07:06
Size         : 0
Type         : Microsoft Office Word 文書

上記だけでは、ファイル自身の情報が今一わからないのでGetDetailsOfを使ってもっと細かい情報を取得する。
GetDetailsOfで取得できる情報は、ごみ箱を開いた時に表示される列の順なので、0から順に9列目まで取得する。
> 0..8 | % { $shell.NameSpace(10).GetDetailsOf( $item, $_ ) }

新規 Microsoft Office Word 文書.docx
C:\Test
 2009/ 03/ 18   21:07
0 バイト
Microsoft Office Word 文書
 2009/ 03/ 18   21:07
 2009/ 03/ 18   21:07
 2009/ 03/ 18   21:07
A

ゴミ箱からファイルを削除する。
> Remove-Item $item.Path

指定したファイルを元に戻す、元の場所じゃなくてもいいけど。
> Move-Item $item.Path ( Join-Path $shell.NameSpace(10).GetDetailsOf( $item, 1 ) $item.Name )

0 コメント: