У нас есть сотрудник отдела продаж, который перешел на 4-дневную рабочую неделю (готовится к выходу на пенсию), поэтому каждый четверг днем ее электронное письмо нужно пересылать другому пользователю, а каждую пятницу днем его нужно возвращать.
Для этого я использую приведенный ниже сценарий VBS, запускаемый через планировщик задач. Хотя сценарий, похоже, выполняет свою работу, судя по тому, что я вижу, когда просматриваю пользовательские настройки Exchange, Exchange не всегда распознает, что настройка изменилась. например В прошлый четверг пересылка была включена и работала корректно. В пятницу сценарий сделал это, чтобы очистить пересылку, но Exchange продолжал пересылать сообщения все выходные.
Я обнаружил, что могу заставить Exchange соблюдать измененный параметр, просто открывая и закрывая свойства пользователя в ADUC. Конечно, я не хочу этого делать. Есть ли не ручной способ заставить Exchange читать и соблюдать настройку?
Скрипт (VBS):
' Call this script with the following parameters:
'
' SrcUser - The logon ID of the suer who's account is to be modified
' DstUser - The logon account of the person to who mail is to be forwarded
' Use "reset" to clear the email forwarding
SrcUser = WScript.Arguments.Item(0)
DstUser = WScript.Arguments.Item(1)
SourceUser = SearchDistinguishedName(SrcUser) 'The user login name
Set objUser = GetObject("LDAP://" & SourceUser)
If DstUser = "reset" then
objUser.PutEx 1, "altRecipient", ""
Else
ForwardTo = SearchDistinguishedName(DstUser)' The contact common name
objUser.Put "AltRecipient", ForwardTo
End If
objUser.SetInfo
Public Function SearchDistinguishedName(ByVal vSAN)
Dim oRootDSE, oConnection, oCommand, oRecordSet
Set oRootDSE = GetObject("LDAP://rootDSE")
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Open "Provider=ADsDSOObject;"
Set oCommand = CreateObject("ADODB.Command")
oCommand.ActiveConnection = oConnection
oCommand.CommandText = "<LDAP://" & oRootDSE.get("defaultNamingContext") & ">;(&(objectCategory=User)(samAccountName=" & vSAN & "));distinguishedName;subtree"
Set oRecordSet = oCommand.Execute
On Error Resume Next
SearchDistinguishedName = oRecordSet.Fields("DistinguishedName")
On Error GoTo 0
oConnection.Close
Set oRecordSet = Nothing
Set oCommand = Nothing
Set oConnection = Nothing
Set oRootDSE = Nothing
End Function
Редактировать:
Если у кого-то есть другой способ достижения той же цели (запланированная переадресация и отмена), я открыт для предложений. Несомненно, эта потребность встречалась и удовлетворялась раньше.
Обновить:
По причинам, о которых я даже не буду догадываться, без каких-либо изменений система скриптов какое-то время работала почти полностью надежно. За последние 3-4 месяца он потерпел неудачу только один раз.
Разве не было бы проще (и добрее) просто настроить общий почтовый ящик «Продажи», чтобы все необходимые дроиды-продавцы использовали его. Он никогда не будет таким быстрым, как простое перенаправление, но тогда нет необходимости писать его или что-то еще. (Мы используем многие из них, позволяет пользователям менять роли, продвигаться по службе, уходить и т. Д., Не беспокоясь о перенаправлении или информировании клиентов о новых адресах и т. Д.).
Другой альтернативой (в Exchange) является общедоступная папка, просто создайте и установите для нее разрешения для всех, кому потребуется доступ (с помощью Outlook), затем назначьте требуемый адрес электронной почты (в диспетчере системы по умолчанию будет «Имя папки» @ domainname.com "), то вместо этого вся почта будет идти туда ... имеет аналогичные / знакомые элементы управления / разрешения делегирования и т. д. Если конкретным пользователям нужен доступ к общим календарям или почтовым ящикам, они могут установить их как" Избранное ".
Таким образом, пользователи могут «захватывать» сообщения для себя, перемещая их в свой почтовый ящик или удаляя по завершении и т. Д. Кроме того, это выглядит профессионально, когда вы видите: Joe Bloggs от имени Sales@company.com. Если это общая папка, включите «Поддерживать для каждого пользователя прочитанную / непрочитанную информацию ..», тогда сотрудники смогут определить, когда сообщение уже было прочитано кем-то другим.
Клиентам это нравится, они получают адрес, который легко запомнить, и их сообщения не теряются! (я думаю, это главное)
Менеджерам это нравится, они могут следить за открытыми вопросами, взвешивать и вообще быть «менеджерами» .. ;-)
Я думаю, вы можете обнаружить, что менее техническое решение соответствует вашим потребностям.
Дайте разрешение на доступ к почтовому ящику 4-дневного еженедельника человеку, которому вы пересылали бы его почту.
Вы можете настроить учетную запись пользователя на отправку ответов от своего имени, от имени или в качестве 4-дневного еженедельника.
Конечно, вам все равно нужно убедиться, что другой сотрудник проверит почтовый ящик, что может быть проблемой, если это связано с продажами.
Или вы можете просто использовать «Нет на рабочем месте», чтобы пересылать почту соответствующему сотруднику. Тогда ваш четырехдневный сотрудник может просто включать «Вне офиса» каждый четверг. Ей будет предложено выключить его, когда она снова войдет в систему. После настройки Out of Office он будет иметь одинаковую конфигурацию каждый раз, когда она открывает Outlook.
Опять же, это требует, чтобы кто-то принял меры вручную - но если она так хороша, то включение «Нет на работе» каждый четверг перед ее уходом не так сложно запомнить (и вы можете установить задачу с напоминанием в Outlook для 4: 30 вечера каждый четверг).
Также может быть проще включить сценарий «Вне офиса» с теми правилами, которые уже были настроены для пользователя.