Удаление папок в MS Outlook

feedsВ стародавние времена, когда я участвовал в бета-тестировании Office 2007, я очень обрадовался появлению в Outlook функционала RSS ридера. Разумеется сразу импортировал туда все свои фиды (а их у меня тогда было много), и попытался использовать. Не понравилось😦 Почему – это отдельная тема, и к посту отношения не имеет. Короче говоря стал я читать RSS не в Outlook, а в Google Reader. Однако настройки RSS в Outlook и сами сообщения видимо мигрировали по моим системам вместе с профилем (корпоративный Exchange), и в какой то момент, папки с сообщениями продублировались. Потом еще раз. Меня это мало волновало, я просто сворачивал папку RSS Feeds и не обращал внимания на то что там происходит.

Сейчас я тестирую уже Office 2010. Новый Outlook при запуске, в момент подготовки профиля, показал мне количество элементов в моём ящике. Это было какое то огромное число, в котором я даже не успел сосчитать разряды. Я удивился что Outlook еще работает, да притом так шустро, и решил изучить – где же всё это добро копится. Поиск был несложным, основной помойкой оказалась папка RSS. Удалить сами подписки было несложно, но вот папки с сообщениями остались на месте. Я сначала начал удалять их по одной, но мне этот процесс быстро надоел. Del удаляет сообщения из ящика, и на папки не работает. То есть на каждой папке надо щелкнуть правой кнопкой мыши, выбрать Remove Folder (где то в середине контекстного меню), и затем еще подтвердить удаление. А папок от RSS у меня осталось очень много, и процесс грозил затянуться на час. И я решил воспользоваться PowerShell😉

Я не писал скрипта, а делал всё интерактивно из консоли. Сначала подключаемся к Outlook с помощью COM интерфейса:

$outlook = New-Object -com outlook.application
$ns = $Outlook.GetNamespace("MAPI")

Теперь надо перебрать список стандартных папок, и выяснить ID папки RSS. Папки в Outlook адресуются по ID, из за того что название на разных языках может отличаться, а вот ID останется тем же.

1..30 | 
select @{n="ID";e={$_}}, @{n="Name"; e={$ns.getdefaultfolder($_).name}} | 
?{$_.name}| ft -a

В результате получился вот такой красивый список стандартных папок Outlook (привожу весь, вдруг вам нужна другая папка😉 )

ID Name
-- ----
 3 Удаленные
 4 Исходящие
 5 Отправленные
 6 Входящие
 9 Календарь
10 Контакты
11 Дневник
12 Заметки
13 Задачи
16 Черновики
18 All Public Folders
19 Конфликты
20 Ошибки синхронизации
21 Локальные ошибки
22 Ошибки сервера
23 Нежелательная почта
25 RSS Feeds
28 To-Do List

Теперь можно поместить нужную нам папку в переменную:

$Rss = $ns.getdefaultfolder(25)

Для обращения к элементам папки обычно используется её массив .Items содержащий дочерние элементы. Но в моём случае мне надо было обратиться к массиву .folders для перебора папок. Перебирая все папки по очереди, я решил выводить название папки (иначе долго и скучно), и уже затем вызывать метод .Delete(). Заняло это одну строчку:

$rss.Folders | %{$_.Name; $_.delete()}

Это заняло минут 10, и еще примерно столько же ушло на написание этого поста😉

Опубликовано в PowerShell, Scripting. Метки: , , . 8 комментариев »

комментариев 8 to “Удаление папок в MS Outlook”

  1. Alexander Trofimov Says:

    Вася, ты долбаный гений. Мне как раз, за исключением двух фактов, очень нравилась бы возможность читать фиды в аутлуке, но, один из этих фактов заставил меня отложить переход на оный. А пробовать снова я опасался из-за процесса удаления этих самых папок (у меня до сих по много фидов, ага =) )
    Так что спасибо😉

  2. Xaegr Says:

    Саш, ты это… спрашивай если что подобное нужно =) Может нафиг пошлю, а может оно и просто решается😉
    А количество фидов рекомендую сократить, время жрут блин😦 Я однажды когда оснознал как много — сразу порезал до достаточно небольшого количества. И теперь если добавляю новый — удаляю один из старых🙂

  3. Alexander Trofimov Says:

    Не, мне большое количество не мешает — работа в течении двух лет с прикрепленными алиасами postmaster, admin и root как-то обучают с одного взгляда отметать ненужную информацию😉

  4. artem Says:

    /записывает в книжечку, по каким адресам можно быстро найти Сашу Трофимова

  5. Oksana Prostakova Says:

    Вася, я правильно понимаю, что оно удалит все папки, да?
    А сложно сделать удаление всех дублей записей RSS?

  6. Xaegr Says:

    Оксан, можно. Я даже хотел предугадать и сразу запостить но решил в отдельный пост сделать😉 Сегодня попробую.
    Там дубли всегда с номером в скобках?
    Лента
    Лента (1)
    Лента (2)
    ?

  7. Alexander Trofimov Says:

    Тёма, поздняк метаться: я уже лет 6 как на этих адресах отсутствую — поднадоело по 2-3 тысячи писем в день разгребать😉

  8. Удаление дублей папок RSS в Outlook « PowerShell и другие скрипты Says:

    […] Expressions, RSS — Xaegr @ 7:35 Я недавно описывал как делается удаление всех папок из папки RSS в Outlook, но не все решили совсем отказаться от использования […]


Обсуждение закрыто.

%d такие блоггеры, как: