Обновление сопоставления альтернативного доступа SharePoint по умолчанию программно - PullRequest
2 голосов
/ 19 февраля 2011

Я включаю HTTPS на своем сервере IIS, где у меня установлена ​​служба SharePoint Services 3.0, и я хотел бы программно обновлять сопоставления альтернативного доступа по умолчанию для одного веб-приложения и моего экземпляра центра администрирования (оба на одном компьютере). Вот код, который у меня есть (Powershell), он добавляет отображение для HTTPS, но я получаю ошибку при попытке удалить исходный.

Вот мой код:

[void][system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint")

$SPWebServiceCollection = new-object Microsoft.SharePoint.Administration.SPWebServiceCollection ([Microsoft.SharePoint.Administration.SPFarm]::Local)

    foreach ($SPWebService in $SPWebServiceCollection) {

        foreach ($webApplication in $SPWebService.WebApplications) {

            Write-Host ('Updating {0}' -f $webApplication.Name)

            foreach ($alternateUrl in $webApplication.AlternateUrls) {

                $incomingUrl = [System.URI] $alternateUrl.IncomingUrl

                $newURL = 'https://{0}{1}' -f  $incomingUrl.Authority, $incomingUrl.PathAndQuery

                $newAltURL = New-Object Microsoft.SharePoint.Administration.SPAlternateUrl ($newURL, $alternateUrl.UrlZone)

                $webApplication.AlternateUrls.Add($newAltURL)

                $webApplication.AlternateUrls.Update($true)

                $webApplication.AlternateUrls.Remove($alternateUrl) #Throws Exception

                $webApplication.AlternateUrls.Update($true)
           }
        }
    }

Вот ошибка, которую я получаю при попытке удалить оригинал:

Исключение, вызывающее «Удалить» с аргументом (ами) «1»: «Объект в административной структуре SharePoint,« SPAlternateUrlCollection Name = SharePoint - 1000 Parent = SPFarm Name = SharePoint_Config_8ddd3701-a332-4e79-98e4-fa11c1b6c17c », может не может быть удалено, потому что другие объекты зависят от него. Обновите все эти иждивенцы, чтобы они указывали на нулевые или другие объекты, и повторите эту операцию. Зависимые объекты:

SPWebApplication Name = SharePoint - 1000 Parent = SPWebService

Однако я не уверен, как делать то, что предлагает исключение.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Оказывается, есть другой метод для выхода из записи по умолчанию, который я пропустил:

$webApplication.AlternateUrls.SetResponseUrl($newAltURL)


[void][system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint")

$SPWebServiceCollection = new-object Microsoft.SharePoint.Administration.SPWebServiceCollection ([Microsoft.SharePoint.Administration.SPFarm]::Local)

foreach ($SPWebService in $SPWebServiceCollection) {

    foreach ($webApplication in $SPWebService.WebApplications) {

        Write-Host ('Updating {0}' -f $webApplication.Name)

        foreach ($alternateUrl in $webApplication.AlternateUrls) {

            $incomingUrl = [System.URI] $alternateUrl.IncomingUrl

            $newURL = 'https://{0}{1}' -f  $incomingUrl.Authority, $incomingUrl.PathAndQuery

            $newAltURL = New-Object Microsoft.SharePoint.Administration.SPAlternateUrl ($newURL, $alternateUrl.UrlZone)

            $webApplication.AlternateUrls.SetResponseUrl($newAltURL)

            $webApplication.AlternateUrls.Update($true)
       }
    }
}
0 голосов
/ 30 марта 2011

Ах ... похоже, вы пытаетесь удалить URL, который использует веб-служба ...

...