Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление из корзины конкретного файла (http://forum.oszone.net/showthread.php?t=355724)

Carrio 28-09-2024 19:51 3031156

Удаление из корзины конкретного файла
 
С помощью этой строки кода можно вывести все элементы из всех корзин текущего пользователя в виде Исходное расположение и Имя:
Код:

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() | select @{n="OriginalLocation"; e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}}, Name
Подскажите, как допилить эту строку, чтобы вместо вывода списка всех файлов корзин просто удалялся определённый из них, который подпадает под условие его исходного расположения вместе с именем, определённый полный исходный путь в общем).

Если бы в качестве условия было только лишь название файла без пути, то всё решалось бы таки образом:
Код:

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() | Where-Object {$_.Name -like 'имя_файла.расширение'} | Remove-Item

DJ Mogarych 29-09-2024 10:33 3031170

Код:

$file = 'C:\Users\User\Downloads\file — копия (3).txt'

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() |
? { "$($_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2"))\$($_.name)" -eq $file } |del


Carrio 29-09-2024 13:43 3031178

DJ Mogarych
Прекрасно, работает, спасибо! Только конструкция '{9B174B33-40FF-11D2-A27E-00C04FC30871} 2' должна быть в одинарных кавычках, иначе весь код дальше экранируется.

Но лично для меня предпочтительнее вообще такая запись:
Код:

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() | ? {$($_.ExtendedProperty('{9B174B33-40FF-11D2-A27E-00C04FC30871} 2'))+'\'+$($_.Name) -like $file} | Remove-Item


Время: 00:01.

Время: 00:01.
© OSzone.net 2001-