如何自动化公用文件夹日历以显示在收藏夹的邮件中

时间:2011-10-28 09:42:40

标签: vbscript login-script outlook-2010 group-policy

如何自动化在Mail Favorite文件夹中显示公用文件夹日历的过程?

我想通过登录脚本或组策略来执行此操作。

我正在使用Microsoft Exchange Server 2007与Windows Server 2008 R2和运行Windows Server 2003 R2的域控制器。

所有工作站系统都有Outlook 2010或Outlook 2007。

在搜索时,我找到了下面的脚本,但是通过这个脚本(已经修改了路径),我只能将公用文件夹日历显示在公共文件夹收藏夹中,而不是在邮件收藏夹文件夹中。

Const olPublicFoldersAllPublicFolders = 18
Dim olkApp, olkSes, olkFolder
Set olkApp = CreateObject("Outlook.Application")
Set olkSes = olkApp.GetNameSpace("MAPI")
'Change the profile name on the next line'
olkSes.Logon "Outlook"
'Change the folder name on the next line.  Repeat the next two lines for each folder         
 you want to add.'
Set olkFolder =     
olkSes.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Public   
calender").Folders("p cal")
olkFolder.AddToPFFavorites
'Change the folder name on the next line.  Repeat the next two lines for each folder     
you want to add.'
Set olkFolder = OpenOutlookFolder("Public Folders\Favorites\P cal")
AddFavoriteFolder olkFolder
olkSes.Logoff
Set olkApp = Nothing
Set olkSes = Nothing
Set olkFolder = Nothing
WScript.Quit

Sub AddFavoriteFolder(olkFolder)
' Purpose: Add a folder to Favorite Folders.'
' Written: 5/2/2009'
' Author:  BlueDevilFan'
' Outlook: 2007'
Const olModuleMail = 0
Const olFavoriteFoldersGroup = 4
    Dim olkPane, olkModule, olkGroup
Set olkPane = olkApp.ActiveExplorer.NavigationPane
Set olkModule = olkPane.Modules.GetNavigationModule(olModuleMail)
Set olkGroup =     
olkModule.NavigationGroups.GetDefaultNavigationGroup(olFavoriteFoldersGroup)
olkGroup.NavigationFolders.Add olkFolder
Set olkPane = Nothing
Set olkModule = Nothing
Set olkGroup = Nothing
End Sub

Function OpenOutlookFolder(strFolderPath)
' Purpose: Opens an Outlook folder from a folder path.'
' Written: 4/24/2009'
' Author:  BlueDevilFan'
' Outlook: All versions'
Dim arrFolders, varFolder, bolBeyondRoot
On Error Resume Next
If strFolderPath = "" Then
    Set OpenOutlookFolder = Nothing
Else
    Do While Left(strFolderPath, 1) = "\"
        strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
    Loop
    arrFolders = Split(strFolderPath, "\")
    For Each varFolder In arrFolders
        Select Case bolBeyondRoot
            Case False
                Set OpenOutlookFolder = olkSes.Folders(varFolder)
                bolBeyondRoot = True
            Case True
                Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
        End Select
        If Err.Number <> 0 Then
            Set OpenOutlookFolder = Nothing
            Exit For
        End If
    Next
End If
On Error GoTo 0
End Function

1 个答案:

答案 0 :(得分:1)

你不能这样做。您只能将邮件文件夹或搜索文件夹添加到“邮件收藏夹”视图。引用Outlook的帮助,收藏夹包含“收件箱,已发送邮件和搜索文件夹等文件夹的快捷方式。您可以更轻松地添加,删除和排列文件夹[...]访问邮件文件夹” (我的重点)。

从MSFT的角度来看,这在逻辑上是一致的。

  • 将公共对象添加到公用文件夹收藏夹是用户不经常进行的活动类型。因此,在登录脚本中处理它是不合适的。这就像为您的个人信息库添加资源,例如具有项目状态或手册的文件夹。
  • 将邮件文件夹添加到邮件收藏夹对于经常使用的项目来说是一个快速而肮脏的技巧。这更像是添加书签。

你可能会争辩说,如果你必须设置大量需要访问公共文件夹的用户,那么在登录脚本中处理它是有意义的,这很好,但同样,它会是将它添加到公共文件夹favotires,而不是邮件....你必须有代码不创建喜欢它已存在。