Настройка службы автообнаружения Exchange с использованием URL-адреса узла личных сайтов в SharePoint Server

 

**Применимо к:**SharePoint Server 2013, SharePoint Server 2016

**Последнее изменение раздела:**2017-11-02

Сводка. Сведения о настройке автообнаружения Exchange для поиска URL-адреса личного сайта SharePoint пользователя.

Благодаря личному сайту в SharePoint Server у пользователей есть широкие возможности для работы с социальными сетями и совместной работы: предоставление доступа к контенту, обсуждение и другие функции, помогающие пользователям выполнять их задачи. Служба автообнаружения Exchange Server 2013 настраивает параметры профиля в почтовых клиентах и на мобильных устройствах в соответствии с именем и паролем пользователя. Службу автообнаружения можно настроить так, чтобы обеспечить простую и комфортную настройку личного сайта для интеграции клиента Office 2016. Например, клиенты Office 2016 и приложения для мобильных телефонов могут использовать службу автообнаружения Exchange для поиска личного сайта пользователя по URL-адресу узла личных сайтов, хранящемуся в доменных службах Active Directory (AD DS). Не требуется определять и вводить URL-адрес узла личных сайтов, достаточно указать электронный адрес и пароль пользователя, чтобы настроить и подготовить функции клиента для следующего:

  • OneDrive для бизнесаоткрытия и сохранения документа в папке OneDrive для бизнеса;

  • доступа к каналу новостей с устройства;

  • раздела "Office" — настройки приложения на Windows Phone.

В этой статье представлены указания по обновлению AD DS с URL-адресом узла личных сайтов в SharePoint Server. В ней также подробно описано получение и удаление текущего URL-адреса узла личных сайтов на случай, если потребуется использовать текущее значение или заменить его.

Важно!

Прежде чем переходить к следующему разделу, необходимо установить и настроить среды SharePoint Server и Exchange Server 2013. Кроме того, необходимо настроить личные сайты в SharePoint Server. Дополнительные сведения о том, как реализовать личные сайты и получить URL-адрес узла личных сайтов, см. в статье Настройка личных сайтов в SharePoint Server.

Настройка службы автообнаружения Exchange с помощью URL-адреса личного сайта

Чтобы обновить доменные службы Active Directory с использованием URL-адреса узла личного сайта, необходимо запустить скрипт на компьютере Exchange Server с помощью командной консоли Exchange. Эта процедура поможет вам создать скрипт PowerShell, а затем запустить его, чтобы обновить AD DS по указанному URL-адресу. Она также содержит необязательные этапы проверки и удаления записи URL-адреса узла личного сайта, если это необходимо. Дополнительные сведения о том, как запускать скрипты, см. в статье Создание сценариев в среде управления Exchange из технической библиотеки, посвященной Exchange Server 2013.

Настройка службы автообнаружения Exchange с использованием URL-адреса узла личных сайтов

  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 ""
    
  2. Откройте командную консоль Exchange.

  3. В командной консоли Exchange перейдите к каталогу, где сохранен сценарий, и запустите сценарий с указанным URL-адресом узла личного сайта. Например, если URL-адрес узла имеет вид https://server/sites/contoso, то синтаксис в командной консоли Exchange может выглядеть следующим образом:

    [PS] C:\>  c:\SetMySiteHostURLInAD.ps1      https://server/sites/contoso
    
  4. Нажмите клавишу ВВОД, чтобы запустить сценарий и обновить AD DS с помощью URL-адреса узла личного сайта.

  5. Чтобы убедиться, что обновлен нужный URL-адрес, выполните следующую команду:

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

    Примечание

    При необходимости вы можете удалить URL-адрес узла личного сайта, введя команду [PS] C:> c:\SetMySiteHostURLInAD.ps1 -remove.

После настройки URL-адреса узла личных сайтов вы можете проверить значение на сайте центра администрирования SharePoint. В разделе Управление приложениями выберите Управление приложениями-службами, Приложение-служба профилей пользователей (или другое выбранное имя приложения службы профилей пользователей), Параметры личных сайтов и Настройка личных сайтов. На странице Параметры личных сайтов вы увидите, что поле URL-адрес личного сайта в Active Directory заполнено вашей записью.

URL-адрес узла личных сайтов в Active Directory

Примечание

Поле URL-адрес узла личного сайта в Active Directory невозможно заполнить через Центр администрирования, а значение URL-адреса узла личного сайта необходимо указать согласно приведенным выше указаниям.

See also

Настройка личных сайтов в SharePoint Server