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