共用方式為


在 SharePoint Server 中使用我的網站主機 URL 設定 Exchange 自動探索

適用於:yes-img-132013 yes-img-16 2016yes-img-19 2019yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

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

  • Microsoft OneDrive - 開啟文件並儲存至您的 OneDrive 位置。

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

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

本文將提供在 SharePoint Server 中使用我的網站主機 URL 來更新 AD DS 的必要步驟。 如果您需要分別查看目前的值或取代該值,本文也詳述了擷取或移除目前我的網站主機 URL 的必要步驟。

重要事項

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

使用我的網站主機 URL 設定 Exchange 自動探索

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

使用我的網站主機 URL 設定 Exchange 自動探索

  1. 在 Exchange Server 2013 電腦上,將下列指令碼的內容複製到記事本。 將此檔案儲存到任何位置,並使用 .ps1 副檔名來將其指定為 PowerShell 指令碼。 最後,請將檔案重新命名為 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 ""
  1. 開啟 Exchange 管理命令介面

  2. 在 Exchange 管理命令介面中,瀏覽至您儲存指令碼的目錄,並搭配指定的「我的網站主機 URL」來執行指令碼。 比方說,如果您的主機 URL 是 http://server/sites/contoso,則 Exchange 管理命令介面中的語法看起來可能像下面這樣:

[PS] C:\>  c:\SetMySiteHostURLInAD.ps1      http://server/sites/contoso
  1. 請按 ENTER 來執行指令碼,然後使用我的網站主機 URL 更新 AD DS。

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

[PS] C:\>  c:\SetMySiteHostURLInAD.ps1      -get

或者,您可以輸入下列命令,來移除我的網站主機 URL:

[PS] C:\>  c:\SetMySiteHostURLInAD.ps1  -remove

Once you have configured the My Site Host URL, you can also verify the value in SharePoint Central Administration Web site. From Application Management, go to Manage service applications, to User Profile Service Application (or other chosen name for User Profile Service Application), to My Site Settings, and finally to Setup My Sites. On the My Site Settings page, you will see that the My Site Host URL in Active Directory field is populated with your entry.

Active Directory 的「我的網站」主機 URL

注意事項

[Active Directory 中的我的網站主機 URL] 欄位無法透過管理中心填入,且必須使用前面詳細敘述的程序來提供我的網站主機 URL 的值。

另請參閱

概念

在 SharePoint Server 中設定「我的網站」