За многие годы работы в качестве консультанта, встречаясь с клиентами по всему миру, я много раз слышал одну и ту же историю. Она начинается с того, что кто-то из сотрудников внезапно получает задание ознакомиться с продуктом, именуемым SharePoint, и оценить, насколько он может быть полезен в производственной деятельности. Спустя несколько месяцев, может быть, год, продукт развернут, и этот сотрудник в глазах коллег становится главным консультантом, предположительно знающим о SharePoint все. Возможно, он посещал какие-нибудь курсы, читал журналы и просто осваивал продукт, в надежде выяснить все, что необходимо знать об этой мощной платформе.
Если ваша карьера администратора SharePoint начиналась именно так, то я восхищаюсь смелостью, с которой вы приняли вызов. Освоение SharePoint — дело нелегкое. Для этого могут потребоваться годы, и есть ли на самом деле кто-нибудь, кто владеет исчерпывающими знаниями об этом предмете?
Данная статья открывает серию публикаций, посвященных практическим навыкам работы с SharePoint. С нее начинается путь, которым вы можете пройти.
Эта серия статей будет содержать практические наставления, советы и пошаговые инструкции. Ее цель — помочь вам научиться выполнять необходимые действия в SharePoint. В первой статье я остановлюсь на администрировании SharePoint.
Работаем с SharePoint: администрирование
Мы начнем с основных задач администрирования служебных приложений SharePoint. Технологии SharePoint, как центрального продукта, обновлялись многократно. Однако неизменной осталась необходимость администрировать SharePoint. Понимание принципов взаимодействия между различными частями платформы, ее функциональности, компонентов и базовой технологии помогут более эффективно управлять SharePoint.
Возможно, вы помните, что благодаря служебным приложениям удается масштабировать функциональность и службы SharePoint. Каждое служебное приложение состоит из различных служб, в том числе веб-служб, а также базы данных и административного компонента.
В качестве примера рассмотрим, из чего состоит служебное приложение поиска (см. экран).
![]() |
| Экран. Компоненты приложения поиска |
Хотя stsadm по-прежнему доступен в SharePoint 2013, мы будем использовать PowerShell для подготовки служебного приложения поиска.
Прежде всего, необходимо убедиться, что оснастка PowerShell SharePoint загружена.
Add-PSSnapin Microsoft.SharePoint. PowerShell -ErrorAction SilentlyContinue
Затем нужно задать значения переменных для базовой настройки.
$SearchIndexLocation = "D:\SharePoint\Data\Search” $SearchAppPoolName = "Search Service Application Pool" $SearchAppPoolAccountName = "DOMAIN\user" $SearchServerName = (Get-ChildItem env: computername).value $SearchServiceName = "Search Service Application" $SearchServiceProxyName = "Search Service Application Proxy" $SearchDatabaseName = "SEARCH"
После того как заданы переменные, можно выполнить проверки для пула приложений и обеспечить запуск основных корпоративных служб поиска (см. листинг 1).
Итак, мы задали переменные и убедились, что служебное приложение поиска уже существует под тем же именем (в противном случае мы создаем его).
$ServiceApplication =
Get-SPEnterpriseSearchServiceApplication
-Identity $SearchServiceName
-ErrorAction SilentlyContinue
if (!$ServiceApplication)
{
$ServiceApplication =
New-SPEnterpriseSearchServiceApplication
-Partitioned -Name $SearchServiceName
-ApplicationPool $SearchAppPool.Name
-DatabaseName $SearchDatabaseName
}
$Proxy =
Get-SPEnterpriseSearchService
ApplicationProxy
-Identity $SearchServiceProxyName
-ErrorAction SilentlyContinue
if (!$Proxy)
{
New-SPEnterpriseSearchService
ApplicationProxy -Partitioned
-Name $SearchServiceProxyName
-SearchApplication $ServiceApplication
}
Наконец, мы активируем новую топологию.
$ServiceApplication.ActiveTopology
Чтобы завершить процесс, нужно клонировать существующую топологию и внести все необходимые изменения, в частности для нескольких серверов или специфических ролей поиска. Для базовой настройки с одним сервером используются команды, приведенные в листинге 2.
Результат достигнут, служебное приложение поиска должно быть создано. Все служебные приложения могут создаваться с использованием PowerShell; синтаксис немного иной, но принцип остается неизменным.
PowerShell позволяет выполнять все виды настройки и администрирования на всех уровнях SharePoint — от фермы до специальных списков и библиотек. Например, чтобы использовать PowerShell для подсчета числа элементов в библиотеке документов SharePoint, применяются следующие команды:
$SharePointSite = Get-SPWeb “http://url/listorlibrary” $SharePointList = $ SharePointSite.Lists ["ListName"] $SharePointListItems = $ SharePointList.Items.Count Write-Host "Total Count of Items in List: " $SharePointListItems
Кроме того, можно использовать PowerShell для создания веб-приложений и семейств веб-сайтов. Для создания веб-приложений с пользовательским пулом приложений можно задействовать следующий синтаксис.
В первую очередь мы задали некоторые переменные для URL-адреса или параметров пула приложений.
$SharePointWebAppURL = "http://web-application-url" $SharePointNewAppPoolName = "Application Pool Name" $SharePointNewAppPoolUserName = "DOMAIN\user"
Затем мы переходим к ферме SharePoint и назначаем пароль для учетной записи, используемой в качестве учетной записи пула приложений (см. листинг 3).
Наконец, мы создаем новое веб-приложение с необходимыми деталями и недавно сформированным пулом приложений (см. листинг 4).
Как видите, PowerShell можно использовать для всеобъемлющего администрирования SharePoint. PowerShell вступает в действие, когда необходимо построить новую ферму SharePoint. Использование сценариев позволяет выполнять повторяемые, проверенные на практике развертывания, что упрощает задачу администратора. Если требуется создать ферму SharePoint, то можно обратиться к графическому интерфейсу psconfig или PowerShell. Вид команд PowerShell будет примерно такой, как в листинге 5.
В SharePoint 2016 предусмотрен дополнительный параметр localservervrole, который может быть заполнен следующими значениями:
WebFrontEnd Application SingleServer SingleServerFarm DistributedCache Search SpecialLoad Custom
В результате в наш код PowerShell требуется внести некоторые изменения, они отражены в листинге 6.
$SearchAppPool = Get-SPServiceApplicationPool -Identity $SearchAppPoolName
-ErrorAction SilentlyContinue
if (!$SearchAppPool)
{
$SearchAppPool = New-SPServiceApplicationPool -Name $SearchAppPoolName
-Account $SearchAppPoolAccountName -Verbose
}
Start-SPEnterpriseSearchServiceInstance $SearchServerName -ErrorAction SilentlyContinue
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $SearchServerName
-ErrorAction SilentlyContinue
$SearchClone = $ServiceApplication.ActiveTopology.Clone() $SearchServiceInstance = Get-SPEnterpriseSearchServiceInstance -local New-SPEnterpriseSearchAdminComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance New-SPEnterpriseSearchCrawlComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance Remove-Item -Recurse -Force -LiteralPath $SearchIndexLocation -ErrorAction SilentlyContinue mkdir -Path $SearchIndexLocation -Force New-SPEnterpriseSearchIndexComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance -RootDirectory $SearchIndexLocation New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $SearchClone -SearchServiceInstance $SearchServiceInstance $SearchClone.Activate()
$Farm = Get-SPFarm
$Service = $Farm.Services | where {$_.TypeName -eq "Microsoft SharePoint Foundation
Web Application"}
$Password = Read-Host -Prompt "Please enter your password" -AsSecureString
$SharePointNewAppPool = New-Object Microsoft.SharePoint.Administration.SPApplicationPool
($SharePointNewAppPoolName,$Service)
$SharePointNewAppPool.CurrentIdentityType = "SpecificUser"
$SharePointNewAppPool.Username = $SharePointNewAppPoolUserName
$SharePointNewAppPool.SetPassword($Password)
$SharePointNewAppPool.Provision()
$SharePointNewAppPool.Update($true)
$SharePointNewAppPool = $Service.ApplicationPools[$SharePointNewAppPoolName] $SharePointWebApp = Get-SPWebApplication $SharePointWebAppURL $SharePointWebApp.ApplicationPool = $SharePointNewAppPool $SharePointWebApp.Update() $SharePointWebApp.ProvisionGlobally()
$SharePointDatabaseServer = "SQL Server"; $SharePointFarmName = "SHAREPOINT"; $SharePointConfigDatabase = $FarmName+"_CONFIG"; $SharePointAdminContentDatabase = $FarmName+"_ADMIN_CONTENT"; $SharePointPassphrase = convertto-securestring "Pass@word1" -asplaintext -force; $SharePointCentralAdminPort = "9999"; $SharePointCentralAdminAuthentication = "NTLM"; $SharePointFarmAccount = "DOMAIN\user" New-SPConfigurationDatabase -DatabaseName $SharePointConfigDatabase -DatabaseServer $SharePointDatabaseServer -FarmCredentials (Get-Credential $SharePointFarmAccount) -Passphrase $SharePointPassphrase -AdministrationContentDatabaseName $SharePointAdminContentDatabase Install-SPHelpCollection -All Initialize-SPResourceSecurity Install-SPService Install-SPFeature -AllExistingFeatures New-SPCentralAdministration -Port $SharePointCentralAdminPort Install-SPApplicationContent
New-SPConfigurationDatabase -DatabaseName $SharePointConfigDatabase -DatabaseServer $SharePointDatabaseServer -FarmCredentials (Get-Credential $SharePointFarmAccount) -Passphrase $SharePointPassphrase -AdministrationContentDatabaseName $SharePointAdminContentDatabase -localserverrole SingleServerFarm Install-SPHelpCollection -All Initialize-SPResourceSecurity Install-SPService Install-SPFeature -AllExistingFeatures New-SPCentralAdministration -Port $SharePointCentralAdminPort Install-SPApplicationContent
.jpg)