За многие годы работы в качестве консультанта, встречаясь с клиентами по всему миру, я много раз слышал одну и ту же историю. Она начинается с того, что кто-то из сотрудников внезапно получает задание ознакомиться с продуктом, именуемым 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.

Листинг 1. Запуск основных корпоративных служб поиска
$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
Листинг 2. Команды базовой настройки
$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()
Листинг 3. Настройка фермы
$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)
Листинг 4. Создание нового веб-приложения
$SharePointNewAppPool = $Service.ApplicationPools[$SharePointNewAppPoolName]

$SharePointWebApp = Get-SPWebApplication $SharePointWebAppURL

$SharePointWebApp.ApplicationPool = $SharePointNewAppPool

$SharePointWebApp.Update()

$SharePointWebApp.ProvisionGlobally()
Листинг 5. Создание фермы SharePoint 2013 с помощью команд PowerShell
$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
Листинг 6. Создание фермы SharePoint 2016 с помощью команд PowerShell
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