none
Проблема с почтовыми ящиками сайта (site mailbox) в SP 2013 RRS feed

  • Вопрос

  • Недавно я установил Sharepoint 2013 Enterprise и Exchange 2013. Я успешно настроил почтовые ящики сайта для нескольких сайтов рабочих групп. Некоторое время спустя я решил сменить основной URL-адрес сайта с короткого https://sharepoint15 на полный FQDN - https://sharepoint15.tls.dc (для пущей совместимости с некоторыми VPN-клиентами). Так как я нигде не нашел официальной инструкции о том, как это делать правильно, то я просто взял и поменял общедоступный URL-адрес для зоны "по умолчанию". Я также прописал все остальные варианты коротких адресов в качестве "внутренних адресов" (для того, чтобы те, кто зашел на старый URL, автоматически переадресовывался на правильный адрес).

    В общем и целом все функции Sharepoint нормально восприняли такой переход. Лишь в некоторых местах мне пришлось производить какие-то действия. Но с функцией "почтовые ящики сайта" все было иначе.

    Когда я зашел на страницу сайта "Почтовый ящик" (например: https://sharepoint15.tls.dc/exchange2013/_layouts/15/TeamMailbox/mailbox.aspx ), то там меня встретила ошибка: 

    Похоже, ваш сайт перемещен

    Вероятно, ваш сайт был перемещен после создания почтового ящика сайта. Ваши данные в безопасности, но вам требуется обратиться к администратору сервера Exchange для подключения почтового ящика к этому сайту.

    Идентификатор взаимосвязи: 5c410c9c-e48d-9051-5523-7372bbc4cfdc, код ошибки: 0

    28.3.2013 20:51:05

    Я открыл сетевой анализатор и обнаружил также, что эта ошибка имеет код 56:

    {
    "SchemaVersion":"15.0.0.0","LibraryVersion":"15.0.4445.1000","ErrorInfo":null,"TraceCorrelationId":"b71d0c9c-e4b7-9051-5523-771a87cdb4dc"
    },0,{
    "_ObjectType_":"Microsoft.SharePoint.Portal.CollaborationMailboxResponse","AlternateUrl":null,"CorrelationId":"b71d0c9c-e4b7-9051-5523-771a87cdb4dc","ErrorCode":0,"Status":56,"Url":null
    }
    ]

    После этого я подумал, что проблему нужно исправлять на стороне Exchange, в частности, в инструкции к powershell командлету Set-SiteMailbox (http://technet.microsoft.com/ru-ru/library/jj218671(v=exchg.150).aspx) говорится, что он может устанавливать атрибут SharePointUrl. Однако, при выполнении этого командлета мне была выдана ошибка 401. Проверив логи, я понял, что Exchange пытается обратиться к Sharepoint по старому "короткому" URL и именно это вызывает у него приступы 401-й ошибки.

    Немного покопавшись, я нашел, что в свойствах учетной записи почтового ящика сайта в AD имеются ссылки на сайт Sharepoint (атрибуты  "msExchMailboxUrl" и "msExchTeamMailboxSharepointUrl"). Я самостоятельно исправил их, после чего 401-е ошибки ушли.

    Однако выполнение командлета Set-SiteMailbox по прежнему завершалось ошибкой, говорящей о том, что каждому сайту Sharepoint может быть присвоено не более одного почтового ящика сайта. А у сайта, который я указал (https://sharepoint15.tls.dc/exchange2013) уже привязан адрес "exchange2013@tls.dc".  В дополнение к этому мне была выдана ошибка с кодом, поиск по которому не дает никаких результатов: FullyQualifiedErrorId : 4DB1A3F2,Microsoft.Exchange.Management.RecipientTasks.SetSiteMailbox

    Это был уже третий день того, как я пытался победить один единственный глюк в Sharepoint. Естественно, что я был готов бросить свои попытки разобраться в ситуации и прибегнуть к более радикальным способам, а именно - удалить все и создать заново (тем более, что контента в ящиках не было). Каково же было мое удивление, когда я осознал, что компания Майкрософт предоставила порядка 10 командлетов, позволяющих лишь создавать и редактировать почтовые ящики сайта и ни одного, который позволял бы удалять их!

    Я пробовал деактивировать функцию "Почтовые ящики сайта" в конфигурации сайта, я пробовал удалять почтовый ящик без возможности удаления в Exchange, я пробовал удалять учетную запись в AD. Все перечисленные действия никак не влияют на наличие ошибки "Похоже ваш сайт перемещен" и, соответственно, возможности создать новые почтовые ящики для пострадавших сайтов. Отмечу отдельно, что для вновь созданных сайтов почтовые ящики создаются без каких-либо видимых проблем.

    Я уже начал догадываться, что проблема лежит где-то в плоскости CSOM и такого понятия как 

    ClientContext

    Я не горю желанием разворачивать Visual Studio для написания отладчика Site Mailbox-ов, тем более, что опыта такого у меня нет. Однако, чего я понять не могу, так это откуда этот самый Microsoft.SharePoint.Portal.CollaborationMailboxStatus хранит свою конфигурацию. Может быть кто-то поможет мне знаниями?

    PS. Сорри за оформление - форум какой-то странный.

    28 марта 2013 г. 17:14

Ответы

  • Я таки докопался до того, где Sharepoint хранит конфигурацию почтовых ящиков сайта и на радостях сделал Powershell скрипт, который поможет всем проверять и изменять текущие настройки почтовых ящиков сайта.

    В отличие от механизмов Sharepoint, мой скрипт умеет также и исправлять и, что самое важное, удалять информацию о почтовых ящиках.

    Полезной опцией также является возможность изменять имена почтовых ящиков сайта, что особенно важно для русскоязычных пользователей, почтовые ящики которых имеют вид абракадабры типа SM13086BMOJ@domain.com. Действовать нужно с двух сторон - с одной стороны нужно изменять имя учетной записи в AD/Exchange, а с другой - править метаданные сайта при помощи моего скрипта.

    Удачи!

    <#
     .SYNOPSIS
    
     SP-UpdateSiteMailboxMetadata helps to configure Site Mailboxes for a SharePoint site
    
     .DESCRIPTION
    
     Sets Site Mailbox settings in metadata of SPWeb object.
    
     .NOTES  
    
     File Name  : SP-UpdateSiteMailboxMetadata.ps1  
     Author     : Andrey Radomanov - andreyra@chtivo.ru
    
     .PARAMETER SiteURL
    
     [Optional] The FQDN of a specific web application to configure. (e.g. https://somesite.domain.local/sites/somesite1)
    
     .PARAMETER EmailAddress
    
     [Optional] The SMTP address of the Site Mailbox (e.g. somesite1@domain.local)
                                                                   
     .PARAMETER SiteCollectionUrl
    
     [Optional] The FQDN address of Site Collection (e.g. https://somesite.domain.local/sites)
    
     .PARAMETER ExchangeTeamMailboxSiteID
    
     [Optional]The GUID of web application (e.g. 2ca52c86-7683-4bd2-ba1b-7b7ea2d9ff18)
    
     .PARAMETER ExchangeTeamMailboxSharePointUrl
    
     [Optional] The FQDN address of the web application (e.g. https://somesite.domain.local/sites/somesite1)
    
     .PARAMETER RemoveAll
    
     [Optional] Flag for cleaning up all site mailbox information for specific web application
    
     .EXAMPLE
    
     Inspect current settings of site-mailbox feature for the site "/sites/somesite1"
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1
    
     .EXAMPLE
    
     Updating an E-mail address for site-mailbox of the site
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -EmailAddress somesite1@domain.local
     
     .EXAMPLE
    
     Updating URLs for site mailbox (need to correct of error 56, or ClientContext problem):
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -SharePointUrl https://somesite.domain.local/sites/somesite1 -SiteCollectionUrl https://somesite.domain.local/sites
    
     .EXAMPLE
    
     Removing current site-mailbox settings:
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -RemoveAll
    
    #>
    
    Param
    (
       [Parameter(Mandatory=$true)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteURL
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$EmailAddress
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteCollectionUrl
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteID
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SharePointUrl
    
       ,[Parameter(Mandatory=$false)]
       [boolean]$RemoveAll
    )
    
    Add-PSSnapin Microsoft.SharePoint.Powershell
    
    Write-Host "Getting SPWeb for the $($SiteURL):"
    Write-Host
    
    $rootWeb = $NULL
    $rootWeb = Get-SPWeb $SiteURL -EA SilentlyContinue
    
    if ($rootWeb -eq $Null)
    {
      Write-Error "Cannot set SPWeb object for URL (maybe it is wrong?)."
      break
    }
    
    $webProps = $NULL
    $webProps = $rootWeb.AllProperties
    
    if ($webProps -eq $Null)
    {
      Write-Error "Cannot get Properties for SPWeb object (You must be member of Administrators group of this site collection?)."
      break
    }
    
    #ExchangeTeamMailboxEmailAddress
    if ($EmailAddress -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxEmailAddress is: $($webProps.Get_Item("ExchangeTeamMailboxEmailAddress"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxEmailAddress is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxEmailAddress is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($EmailAddress -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxEmailAddress from: $($webProps.Get_Item("ExchangeTeamMailboxEmailAddress")) to: $($EmailAddress)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxEmailAddress", $EmailAddress)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxEmailAddress as: $($EmailAddress)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxEmailAddress", $EmailAddress)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxEmailAddress") -ne $EmailAddress)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSiteCollectionUrl
    if ($SiteCollectionUrl -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSiteCollectionUrl is: $($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSiteCollectionUrl is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSiteCollectionUrl is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SiteCollectionUrl -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSiteCollectionUrl from: $($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl")) to: $($SiteCollectionUrl)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSiteCollectionUrl", $SiteCollectionUrl)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSiteCollectionUrl as: $($SiteCollectionUrl)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSiteCollectionUrl", $SiteCollectionUrl)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl") -ne $SiteCollectionUrl)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSiteID
    if ($SiteID -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSiteID is: $($webProps.Get_Item("ExchangeTeamMailboxSiteID"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSiteID is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSiteID is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SiteID -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSiteID from: $($webProps.Get_Item("ExchangeTeamMailboxSiteID")) to: $($SiteID)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSiteID", $SiteID)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSiteID as: $($SiteID)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSiteID", $SiteID)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSiteID") -ne $SiteID)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSharePointUrl
    if ($SharePointUrl -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSharePointUrl is: $($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSharePointUrl is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSharePointUrl is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SharePointUrl -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSharePointUrl from: $($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl")) to: $($SharePointUrl)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSharePointUrl", $SharePointUrl)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSharePointUrl as: $($SharePointUrl)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSharePointUrl", $SharePointUrl)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl") -ne $SharePointUrl)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #RemoveAll
    if ($RemoveAll -eq $True)
    {
      Write-Host 
      Write-Host "WARNING: CLEANING UP ALL SITE-MAILBOX CONFIGURATION" -foreground yellow
      Write-Host 
      Write-Host "Please save all previous output for backup purposes!"
      Write-Host 
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxEmailAddress")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSiteCollectionUrl")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSiteID")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSharePointUrl")
      }
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
    
    }
    
    $rootWeb.Dispose()
    
    Write-host "Done."

    • Помечено в качестве ответа Andrey Radomanov 29 марта 2013 г. 13:54
    29 марта 2013 г. 13:53

Все ответы

  • Я таки докопался до того, где Sharepoint хранит конфигурацию почтовых ящиков сайта и на радостях сделал Powershell скрипт, который поможет всем проверять и изменять текущие настройки почтовых ящиков сайта.

    В отличие от механизмов Sharepoint, мой скрипт умеет также и исправлять и, что самое важное, удалять информацию о почтовых ящиках.

    Полезной опцией также является возможность изменять имена почтовых ящиков сайта, что особенно важно для русскоязычных пользователей, почтовые ящики которых имеют вид абракадабры типа SM13086BMOJ@domain.com. Действовать нужно с двух сторон - с одной стороны нужно изменять имя учетной записи в AD/Exchange, а с другой - править метаданные сайта при помощи моего скрипта.

    Удачи!

    <#
     .SYNOPSIS
    
     SP-UpdateSiteMailboxMetadata helps to configure Site Mailboxes for a SharePoint site
    
     .DESCRIPTION
    
     Sets Site Mailbox settings in metadata of SPWeb object.
    
     .NOTES  
    
     File Name  : SP-UpdateSiteMailboxMetadata.ps1  
     Author     : Andrey Radomanov - andreyra@chtivo.ru
    
     .PARAMETER SiteURL
    
     [Optional] The FQDN of a specific web application to configure. (e.g. https://somesite.domain.local/sites/somesite1)
    
     .PARAMETER EmailAddress
    
     [Optional] The SMTP address of the Site Mailbox (e.g. somesite1@domain.local)
                                                                   
     .PARAMETER SiteCollectionUrl
    
     [Optional] The FQDN address of Site Collection (e.g. https://somesite.domain.local/sites)
    
     .PARAMETER ExchangeTeamMailboxSiteID
    
     [Optional]The GUID of web application (e.g. 2ca52c86-7683-4bd2-ba1b-7b7ea2d9ff18)
    
     .PARAMETER ExchangeTeamMailboxSharePointUrl
    
     [Optional] The FQDN address of the web application (e.g. https://somesite.domain.local/sites/somesite1)
    
     .PARAMETER RemoveAll
    
     [Optional] Flag for cleaning up all site mailbox information for specific web application
    
     .EXAMPLE
    
     Inspect current settings of site-mailbox feature for the site "/sites/somesite1"
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1
    
     .EXAMPLE
    
     Updating an E-mail address for site-mailbox of the site
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -EmailAddress somesite1@domain.local
     
     .EXAMPLE
    
     Updating URLs for site mailbox (need to correct of error 56, or ClientContext problem):
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -SharePointUrl https://somesite.domain.local/sites/somesite1 -SiteCollectionUrl https://somesite.domain.local/sites
    
     .EXAMPLE
    
     Removing current site-mailbox settings:
     SP-UpdateSiteMailboxMetadata.ps1 -SiteURL https://somesite.domain.local/sites/somesite1 -RemoveAll
    
    #>
    
    Param
    (
       [Parameter(Mandatory=$true)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteURL
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$EmailAddress
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteCollectionUrl
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SiteID
    
       ,[Parameter(Mandatory=$false)]
       [ValidateNotNullOrEmpty()]   
       [string]$SharePointUrl
    
       ,[Parameter(Mandatory=$false)]
       [boolean]$RemoveAll
    )
    
    Add-PSSnapin Microsoft.SharePoint.Powershell
    
    Write-Host "Getting SPWeb for the $($SiteURL):"
    Write-Host
    
    $rootWeb = $NULL
    $rootWeb = Get-SPWeb $SiteURL -EA SilentlyContinue
    
    if ($rootWeb -eq $Null)
    {
      Write-Error "Cannot set SPWeb object for URL (maybe it is wrong?)."
      break
    }
    
    $webProps = $NULL
    $webProps = $rootWeb.AllProperties
    
    if ($webProps -eq $Null)
    {
      Write-Error "Cannot get Properties for SPWeb object (You must be member of Administrators group of this site collection?)."
      break
    }
    
    #ExchangeTeamMailboxEmailAddress
    if ($EmailAddress -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxEmailAddress is: $($webProps.Get_Item("ExchangeTeamMailboxEmailAddress"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxEmailAddress is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxEmailAddress is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($EmailAddress -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxEmailAddress from: $($webProps.Get_Item("ExchangeTeamMailboxEmailAddress")) to: $($EmailAddress)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxEmailAddress", $EmailAddress)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxEmailAddress as: $($EmailAddress)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxEmailAddress", $EmailAddress)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxEmailAddress") -ne $EmailAddress)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSiteCollectionUrl
    if ($SiteCollectionUrl -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSiteCollectionUrl is: $($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSiteCollectionUrl is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSiteCollectionUrl is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SiteCollectionUrl -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSiteCollectionUrl from: $($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl")) to: $($SiteCollectionUrl)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSiteCollectionUrl", $SiteCollectionUrl)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSiteCollectionUrl as: $($SiteCollectionUrl)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSiteCollectionUrl", $SiteCollectionUrl)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSiteCollectionUrl") -ne $SiteCollectionUrl)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSiteID
    if ($SiteID -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSiteID is: $($webProps.Get_Item("ExchangeTeamMailboxSiteID"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSiteID is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSiteID is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SiteID -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSiteID from: $($webProps.Get_Item("ExchangeTeamMailboxSiteID")) to: $($SiteID)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSiteID", $SiteID)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSiteID as: $($SiteID)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSiteID", $SiteID)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSiteID") -ne $SiteID)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #ExchangeTeamMailboxSharePointUrl
    if ($SharePointUrl -eq "")
    {
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        Write-Host "--> CURRENT ExchangeTeamMailboxSharePointUrl is: $($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl"))" -foregroundcolor yellow
        Write-Host "Parameter ExchangeTeamMailboxSharePointUrl is not defined as input parameter for this script. Skipping..."
        Write-Host 
      } else {
        Write-Warning "--> ExchangeTeamMailboxSharePointUrl is <UNDEFINED>"
        Write-Host 
      }
    
    } else { #if ($SharePointUrl -eq "")
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        Write-Host "--> UPDATING ExchangeTeamMailboxSharePointUrl from: $($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl")) to: $($SharePointUrl)" -foregroundcolor yellow
        $webProps.Set_Item("ExchangeTeamMailboxSharePointUrl", $SharePointUrl)
      } else { 
        Write-Warning "--> DEFINING ExchangeTeamMailboxSharePointUrl as: $($SharePointUrl)" -foregroudcolor yellow
        $webProps.Add("ExchangeTeamMailboxSharePointUrl", $SharePointUrl)
      }
    
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      $webProps = $NULL
    
      $webProps = $rootWeb.AllProperties
      if ($webProps -eq $Null)
      {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      if ($webProps.Get_Item("ExchangeTeamMailboxSharePointUrl") -ne $SharePointUrl)
      {
        Write-Host "Error while updating Properties collection SPWeb object. (You must run script from an Administrator of Site-Collection)" -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
     
    }
    
    #RemoveAll
    if ($RemoveAll -eq $True)
    {
      Write-Host 
      Write-Host "WARNING: CLEANING UP ALL SITE-MAILBOX CONFIGURATION" -foreground yellow
      Write-Host 
      Write-Host "Please save all previous output for backup purposes!"
      Write-Host 
      if ($webProps.ContainsKey("ExchangeTeamMailboxEmailAddress") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxEmailAddress")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteCollectionUrl") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSiteCollectionUrl")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSiteID") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSiteID")
      }
      if ($webProps.ContainsKey("ExchangeTeamMailboxSharePointUrl") -eq $True)
      {
        $webProps.Remove("ExchangeTeamMailboxSharePointUrl")
      }
    
      try
      {
        $rootWeb.Update()
      }
      catch {
        Write-Host "Unexpected error while updating Properties collection SPWeb object." -foregroundcolor red
        break
      }
    
      Write-Host "SUCCESS!" -foregroundcolor green
      Write-Host 
    
    }
    
    $rootWeb.Dispose()
    
    Write-host "Done."

    • Помечено в качестве ответа Andrey Radomanov 29 марта 2013 г. 13:54
    29 марта 2013 г. 13:53
  • Андрей, спасибо за то что Вы поделились данной информацией со всеми пользователями! Я уверен, что это поможет многим пользователям, которые столкнутся с такой проблемой!

    29 марта 2013 г. 14:14
    Модератор