本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

設定 Exchange 自動探索與 SharePoint Server 2013 我的網站主機 URL

SharePoint 2013
 

適用版本:SharePoint Server 2013

上次修改主題的時間:2016-12-16

摘要︰了解如何設定 Exchange 自動探索,以找出使用者的 SharePoint 我的網站 URL。

在SharePoint Server 2013、 我的網站會提供使用者豐富的社交網路與共同作業功能可讓內容共用、 討論、 以及其他功能來執行其工作的使用者。Exchange Server 2013自動探索服務設定的設定檔設定郵件用戶端和行動裝置會根據提供的使用者名稱及密碼。自動探索服務也可以設定為允許Office 2013用戶端整合我的網站以簡單、 順暢設定體驗。例如, Office 2013用戶端和行動電話應用程式可以使用 Exchange 自動探索找出使用者的我的網站根據 [我的網站主機 URL 儲存在 Active Directory 網域服務 (AD DS) 中。而不是用來識別並輸入我的網站主機 URL,使用者的電子郵件地址和密碼是唯一的需求來設定和佈建的用戶端功能:

  • 商務用 OneDrive — open 和文件儲存至商務用 OneDrive位置。

  • 存取裝置上的新聞摘要。

  • Office Hub — 設定 Windows Phone 上的應用程式。

本文提供必要更新 AD DS 與我的網站主機 URL SharePoint Server 2013中的步驟。它還詳述需要擷取或者如果您需要查看目前的值或取代為分別移除目前我的網站主機 URL 的步驟。

重要事項 重要事項:
繼續下一節之前,您必須已SharePoint Server 2013和Exchange Server 2013環境安裝及設定。此外,您需要安裝及設定我的網站SharePoint Server 2013中。如需如何實作我的網站和擷取我的網站主機 URL,請參閱在 SharePoint Server 2013 中設定「我的網站」的詳細資訊。

若要更新 AD DS 與 「 我的網站主機 URL,您必須使用 Exchange 管理命令介面Exchange Server電腦上執行指令碼。此程序可協助您建立Windows PowerShell指令碼,然後執行 [使用指定的 URL 值更新 AD DS 的指令碼。此程序也會提供驗證及移除 「 我的網站主機 URL 項目視選用的步驟。如需如何執行指令碼的詳細資訊,請參閱 Exchange Server 2013 技術程式庫中的Exchange 管理命令介面與指令碼

設定 Exchange 自動探索與我的網站主機 URL
  1. Exchange Server 2013在電腦上,將下列指令碼的內容複製到記事本。將此檔案儲存至任何位置,並指定為Windows PowerShell指令碼使用.ps1 副檔名。最後,重新命名檔案SetMySiteHostURLInAD.ps1

    function PrintUsage
    {
    @"
    
    NAME:
    SetMySiteHostURLInAD.ps1
    
    SYNOPSIS:
    The purpose of this script is to set My Site Host URL in Active Directory.
    This URL will be returned through Exchange Autodiscover.
    
    MySiteHostURL - URL of My Site Host to set in Active Directory.
    Or use -get to get My Site Host URL from Active Directory.
    Or use -remove to remove My Site Host URL from Active Directory.
    
    SYNTAX:
    SetMySiteHostURLInAD.ps1 "MySiteHostURL" | -get | -remove
    
    EXAMPLES:
    SetMySiteHostURLInAD.ps1 "http://my"
    SetMySiteHostURLInAD.ps1 -get
    SetMySiteHostURLInAD.ps1 -remove
    
    "@
    }
    
    function GetConfigurationNamingContextPath
    {
        return GetEntryProperty "LDAP://RootDSE" "configurationNamingContext"
    }
    
    function GetExchangePath
    {
        param([string]$configurationNamingContextPath)
    
        return "LDAP://CN=Microsoft Exchange,CN=Services," + $configurationNamingContextPath
    }
    
    function GetOrganizationContainerPath
    {
        param([string]$exchangePath)
    
        [string]$organizationContainerPath = ""
    
        ([ADSI] $exchangePath).Children | foreach {
          if (!$organizationContainerPath -and $_.SchemaClassName -eq "msExchOrganizationContainer") {
             $organizationContainerPath = $_.Path
                }
        }
    
        return $organizationContainerPath
    }
    
    function GetEntryProperty
    {
        param([string]$entryPath, [string]$propertyName)
    
        $entry = [ADSI] $entryPath
    
        [string]$value = ""
    
        trap {
             continue
        }
    
        $value = $entry.Get($propertyName)
    
        return $value
    }
    
    function SetEntryProperty
    {
        param([string]$entryPath, [string]$propertyName, [string]$propertyValue)
    
        $entry = [ADSI] $entryPath
    
        if (!$propertyValue)
        {
            $entry.PutEx(1, $propertyName, $null)
        }
        else
        {
            $entry.Put($propertyName, $propertyValue)
        }
    
        trap {
            Write-Host "`nError setting property" -ForegroundColor Red
            continue
        }
    
        $entry.SetInfo()
    }
    
    function AddOrReplaceOrRemoveMySiteHostURL
    {
        param([string]$old, [string]$url)
    
        [string]$separator = ";"
        [string]$label = "SPMySiteHostURL" + $separator
    
        if (!$old)
          {
             if (!$url)
                {
                  return ""
                }
             else
                {
                  return $label + $url
                }
          }
    
        [int]$labelPosition = $old.IndexOf($label)
        if ($labelPosition -eq -1)
          {
             if (!$url)
                {
                  return $old
                }
             else
                {
                  if ($old[$old.Length - 1] -eq $separator)
                  {
                  return $old + $label + $url
                  }
                  else
                  {
            return $old + $separator + $label + $url
                  }
                }
            }
    
        [int]$valuePosition = $labelPosition + $label.Length
    
        [int]$nextLabelPosition = $old.IndexOf($separator, $valuePosition)
         if ($nextLabelPosition -eq -1)
           {
             if (!$url)
             {
                  if ($labelPosition -eq 0)
                  {
                     return ""
                  }
                  else
                  {
                     return $old.Substring(0, $labelPosition - 1)
                  }
              }
             else
             {
                  return $old.Substring(0, $valuePosition) + $url
             }
          }
    
         if (!$url)
           {
              return $old.Substring(0, $labelPosition) + $old.Substring($nextLabelPosition + 1)
           }
          else
           {
              return $old.Substring(0, $valuePosition) + $url + $old.Substring($nextLabelPosition)
           }
    }
    
    if ($args.Count -ne 1)
    {
        Write-Host "`nError: Required argument missing or too many arguments" -ForegroundColor Red
        PrintUsage
        exit
    }
    
    if ($args[0] -eq "-?" -or $args[0] -eq "-h" -or $args[0] -eq "-help")
    {
        PrintUsage
        exit
    }
    
    [string]$url = ""
    if ($args[0] -ne "-r" -and $args[0] -ne "-remove")
    {
        $url = $args[0]
    }
    
    Write-Host "`nSetting My Site Host URL in Active Directory..."
    
    [string]$configurationNamingContextPath = GetConfigurationNamingContextPath
    Write-Host "`nConfiguration Naming Context path: $configurationNamingContextPath"
    
    [string]$exchangePath = GetExchangePath $configurationNamingContextPath
    Write-Host "`nExchange path: $exchangePath"
    
    [string]$organizationContainerPath = GetOrganizationContainerPath $exchangePath
    Write-Host "`nOrganization Container path: $organizationContainerPath"
    
    [string]$propertyName = "msExchServiceEndPointURL"
    Write-Host "`nProperty name: $propertyName"
    
    [string]$old = GetEntryProperty $organizationContainerPath $propertyName
    Write-Host "`nOld value: $old"
    
    if (!$url)
    {
        Write-Host "`nRemoving value"
    }
    elseif ($url -eq "-g" -or $url -eq "-get")
    {
        Write-Host ""
        exit
    }
    else
    {
        Write-Host "`nAdding or replacing value: $url"
    }
    
    [string]$new = AddOrReplaceOrRemoveMySiteHostURL $old $url
    Write-Host "`nNew value: $new"
    
    SetEntryProperty $organizationContainerPath $propertyName $new
    Write-Host ""
    
  2. 在 [開始] 功能表上,按一下 [所有程式]。

  3. 按一下 [ Microsoft Exchange Server 2013

  4. 按一下 [ Exchange 管理命令介面]。

  5. 在 [Exchange 管理命令介面中,瀏覽至您已在此儲存指令碼並執行指令碼與您指定之我的網站主機 URL 的目錄。例如,如果您有 http://server/sites/contoso 主機 URL,語法看起來可能類似下列的 Exchange 管理命令介面︰

    [PS] C:\>  c:\SetMySiteHostURLInAD.ps1      http://server/sites/contoso
    
  6. 按 enter 鍵執行指令碼並以更新 「 我的網站主機 URL AD DS。

  7. 若要確認已更新的正確 URL,請執行下列命令:

    [PS] C:\>  c:\SetMySiteHostURLInAD.ps1      -get
    
    注意事項 附註:
    (選用) 您可以輸入命令[PS] C:\> c:\SetMySiteHostURLInAD.ps1 -remove移除我的網站主機 URL。

一旦您已設定我的網站主機 URL,您也可以檢查SharePoint 2013 管理中心中的值。從應用程式管理] 移至 [管理服務應用程式,為User Profile Service 應用程式(或使用者設定檔服務應用程式的其他所選擇的名稱) 至我的網站設定],最後才安裝 「 我的網站。在 [我的網站設定] 頁面上,您會看到 [ Active Directory 中 「 我的網站主機 URL ] 欄位會填入項目。

Active Directory 的「我的網站」主機 URL
注意事項 附註:
無法透過管理中心,填入 [ Active Directory 中 「 我的網站主機 URL ] 欄位和我的網站主機 URL 值必須提供使用先前的詳細程序。

https://technet.microsoft.com/zh-tw/library/ee624362.aspx
顯示: