שלום
חברים,
בהמשך
למאמר שלי הסוקר את רכיב החיפוש , מימשתי Script שיוצר את ה-Service Application עם כלל הרכיבים המסוקרים במאמר הקודם בעזרת PowerShell.
חשוב
לעבור על ה-Script
לפני ולעדכן ערכים בהתאם.
להלן
ה-Script :
#====================================
#====================================
#Provision
Search Service Application
#====================================
#====================================
#set the name for the Service Application
#----------------------------------------------------------
$serviceAppName
= "Search Service Application"
#Set the server names for core pieces
#------------------------------------------------------
$serverName
= "Server Name" #Admin/Index
$queryserverName
= "Server Name" #Query
$dbserverName
= "Server Name" #DB
<# if you are install all the component on one server just the server name and delete the other from the script,
don't
forget to chanage the server names in the script below #>
#IndexLocation
#-----------------------------
$IndexLocation
= "F:\Data\Search14Index” #Location must be empty, will be deleted during
the process!
mkdir
-Path $IndexLocation -Force
#Search component
#-----------------------------
$adminServer
= $serverName #recommended that the component be locate alongside a
Crawl Component
$crawlServer
= $serverName
$queryServer
= $queryserverName
$dbServer
= $dbserverName #Change the value if you have Seperate SQL
Server
$searchDBName
= "SearchServiceApplication"
#Define Service Account / ApplicationPool Account
#--------------------------------------------------------------------------
Write-Host
"Step 1 : Define Service Account" -foregroundcolor Cyan
$searchCred
= "Domain\UserAccount" #Repalce The Text With Real
Account
$cred =
Get-Credential $searchCred
$searchSvcAccount
= Get-SPManagedAccount $cred.UserName -ErrorAction SilentlyContinue
if($searchSvcAccount -eq $null)
{
$searchSvcAccount = New-SPManagedAccount $cred
}
Write-Host "Step 2 : Define Application Pool Account" -foregroundcolor Cyan
$AppPoolsearchCred
= "Domain\UserAccount" #Repalce The Text With Real Account
$cred =
Get-Credential $AppPoolsearchCred
$searchAppPoolAccount
= Get-SPManagedAccount $cred.UserName -ErrorAction SilentlyContinue
if($searchAppPoolAccount -eq $null)
{
$searchAppPoolAccount = New-SPManagedAccount $cred
}
<#One additional account that you will need is the default content access account.
this account should not be a managed account and therefore requires no
additional congiuration steps #>
#Get Search Service Instance if exist
#-----------------------------------------
Write-Host
"Step 3 : Get Search Service Instance if exist" -foregroundcolor Cyan
$searchSvc
= Get-SPEnterpriseSearchServiceInstance -Local
if($searchSvc
-eq $null)
{
throw "Unable to Retrive Search Service"
}
#Start the search service
#-----------------------------------------
Write-Host
"Step 4 : Start the search service" -foregroundcolor Cyan
if($searchSvc.Status
-ne "Online")
{
$searchSvc | Start-SPServiceInstance
Write-Host "the search service is now Online" -Foregroundcolor
Green
}
else
{
Write-Host "the search service is already Online" -Foregroundcolor
Yellow
}
#Configure the search Service
#-----------------------------------------
Write-Host
"Step 5 : Configure the search Service" -foregroundcolor Cyan
$contactEmail
= "mailAdress@SharePoint.com"
$connectionTimeOut
= "60"
$acknowledgementTimeOut
= "60"
$proxyType
= "Default"
$ignoreSSLWranings
= $false
$internetID
= $null
$performanceLevel
= "PartlyReduced"
Write-Host "Step 6 : Setting search service properties..." -foregroundcolor Yellow
while($true)
{
$svc
= Get-SPEnterpriseSearchService
$svc
| Set-SPEnterpriseSearchService -ServiceAccount
$searchSvcManagedAccount.UserName -ServicePassword $searchSvcAccount.Password
-ContactEmail $contactEmail -connectionTimeOut $connectionTimeOut
-acknowledgementTimeOut $acknowledgementTimeOut -proxyType $proxyType
-ignoreSSLWarnings $ignoreSSLWranings -internetIdentity $internetID
-performanceLevel $performanceLevel -ErrorAction SilentlyContinue
-ErrorVariable err
if($err)
{
if($err[0].Exception.Message -like "*update conflict")
{
Write-Warning "An Update conflict occured"
Start-Sleep 2
continue
}
throw $err
}
break
}
Write-Host " Configure search service ended " -foregroundcolor Green
#Create Search Service Application
#--------------------------------------------------
Write-Host
"Step 7 : Create $serviceAppName " -foregroundcolor Cyan
$searchApp = Get-SPEnterpriseSearchServiceApplication $serviceAppName -ErrorAction SilentlyContinue
$poolName = "Search Service Application Pool"
$AdminPoolName
= "Search Service Application Admin Pool"
$saAppPool = New-SPServiceApplicationPool -Name $poolName -Account $searchAppPoolAccount
$saAdminAppPool
= New-SPServiceApplicationPool -Name $AdminPoolName -Account
$searchAppPoolAccount
Write-Host "Creating Search Service Application Now... " -foregroundcolor yellow
$searchApp
= New-SPEnterpriseSearchServiceApplication -Name $serviceAppName
-ApplicationPool $saAppPool -AdminApplicationPool $saAdminAppPool
-DataBaseServer $dbServer -DataBaseName $searchDBName
Write-Host "Please wait while the Search Service Application are Creating... " -foregroundcolor yellow
Start-Sleep
-s 30
if($searchApp -ne $null)
{
Write-Host "Search Service Application Created Successfully ! "
-foregroundcolor Green
}
else
{
Write-Host "Search Service Application dosen't Created Successfully !
" -foregroundcolor Red
}
#Create the Service Application Proxy
#-----------------------------------------
Write-Host
"Step 7 : Create the Service Application Proxy" -foregroundcolor Cyan
$searchProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name "$serviceAppName Proxy" -SearchApplication $searchApp
Write-Host "Please wait while the Search Service Application are Creating... " -foregroundcolor yellow
Start-Sleep
-s 10
if($searchProxy -ne $null)
{
Write-Host "Search Service Application Proxy Created Successfully ! "
-foregroundcolor Green
}
else
{
Write-Host "Search Service Application Proxy dosen't Created Successfully
! " -foregroundcolor Red
}
#Configure the Administration Component
#-----------------------------------------------------
Write-Host
"Step 9 : Configure the Administration Component" -foregroundcolor
Cyan
$adminSearchInstance
= Get-SPEnterpriseSearchServiceInstance $adminServer
if($adminSearchInstance.Status
-ne "Online")
{
$adminSearchInstance | Start-SPServiceInstance
}
else
{
write-host
"Admin Search Instance is Online" -foregroundcolor Green
}
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
$admin |
Set-SPEnterpriseSearchAdministrationComponent -SearchServiceInstance
$adminSearchInstance
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
while(-not
$admin.Initialized)
{
Start-Sleep
10
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
}
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance
$adminServer
Write-Host
" Configure Administration Component ended " -foregroundcolor Green
Start-Sleep
-s 5
#Create
the Crawl and Query Components
#-------------------------------------------------------
Write-Host
"Step 10 : Create the Crawl and Query Components" -foregroundcolor
Cyan
$initialCrawlTopology
= ($searchApp | Get-SPEnterpriseSearchCrawlTopology)
$initialQueryTopology
= ($searchApp | Get-SPEnterpriseSearchQueryTopology)
#Crawl
#-------
Write-Host
"=== Crawl Component ===" -foregroundcolor Cyan
$crawlTopology
= ($searchApp | New-SPEnterpriseSearchCrawlTopology)
$crawlDB
= Get-SPEnterpriseSearchCrawlDatabase -SearchApplication $searchApp
$crawlInstance
= Get-SPEnterpriseSearchServiceInstance $crawlServer
$crawlComponent
= New-SPEnterpriseSearchCrawlComponent -CrawlTopology $crawlTopology
-CrawlDatabase $crawlDB -SearchServiceInstance $crawlInstance
$crawlTopology
| Set-SPEnterpriseSearchCrawlTopology -Active
do
{
Start-Sleep
5
$crawlTopology
= $searchApp | Get-SPEnterpriseSearchCrawlTopology $crawlTopology
}
while($crawlTopology.State
-ne "Active")
Write-Host
" Configure Crawl Component ended " -foregroundcolor Green
<# It
is important to wait until the process of Crawl initiation will be finished
After it done you can initiate the query Component #>
#Query
#--------
Write-Host
"=== Query Component ===" -foregroundcolor Cyan
Start-Sleep
-s 300
$queryTopology
= ($searchApp | New-SPEnterpriseSearchQueryTopology -Partitions 1 )
$propDB
= Get-SPEnterpriseSearchPropertyDatabase -SearchApplication $searchApp
$indexPartition
= Get-SPEnterpriseSearchIndexPartition -QueryTopology $queryTopology
$indexPartition
| Set-SPEnterpriseSearchIndexPartition -PropertyDatabase $propDB
$svc =
Get-SPEnterpriseSearchServiceInstance $queryServer
$queryComponent
= New-SPEnterpriseSearchQueryComponent -queryTopology $queryTopology
-indexPartition $indexPartition -SearchServiceInstance $svc
$queryTopology
| Set-SPEnterpriseSearchqueryTopology -Active
do
{
Start-Sleep
5
$queryTopology
= $searchApp | Get-SPEnterpriseSearchqueryTopology $queryTopology
}
while($queryTopology.State
-ne "Active")
Write-Host
" Configure Query Component ended " -foregroundcolor Green
$initialCrawlTopology
| Remove-SPEnterpriseSearchCrawlTopology -confirm:$false
#
Activate the Topology
#-------------------------------
if($initialQueryTopology.State
-eq "Deactivating")
{
Write-Host
"Wait for Deactivating the Query Component" -foregroundcolor Yellow
do
{
}
while($initialQueryTopology.State -eq "Deactivating")
}
else
{
Start-Sleep -s 120
$initialQueryTopology | Remove-SPEnterpriseSearchQueryTopology -confirm:$false
}
Write-Host
" ======== The End ========" -foregroundcolor Green
בהצלחה
!
רון
נס.
============================================================================================================================================================================================================================================================
Hello Friends,
Further to my previous article that reviewing the search
component, I write a PowerShell Script that create search service application
with all components reviewed in a previous article.
It is important to go over the script before you run it and
update the necessary values.
The script:
#====================================
#====================================
#Provision
Search Service Application
#====================================
#====================================
#set the name for the Service Application
#----------------------------------------------------------
$serviceAppName
= "Search Service Application"
#Set the server names for core pieces
#------------------------------------------------------
$serverName
= "Server Name" #Admin/Index
$queryserverName
= "Server Name" #Query
$dbserverName
= "Server Name" #DB
<# if you are install all the component on one server just the server name and delete the other from the script,
don't
forget to chanage the server names in the script below #>
#IndexLocation
#-----------------------------
$IndexLocation
= "F:\Data\Search14Index” #Location must be empty, will be deleted during
the process!
mkdir
-Path $IndexLocation -Force
#Search component
#-----------------------------
$adminServer
= $serverName #recommended that the component be locate alongside a
Crawl Component
$crawlServer
= $serverName
$queryServer
= $queryserverName
$dbServer
= $dbserverName #Change the value if you have Seperate SQL
Server
$searchDBName
= "SearchServiceApplication"
#Define Service Account / ApplicationPool Account
#--------------------------------------------------------------------------
Write-Host
"Step 1 : Define Service Account" -foregroundcolor Cyan
$searchCred
= "Domain\UserAccount" #Repalce The Text With Real
Account
$cred =
Get-Credential $searchCred
$searchSvcAccount
= Get-SPManagedAccount $cred.UserName -ErrorAction SilentlyContinue
if($searchSvcAccount -eq $null)
{
$searchSvcAccount = New-SPManagedAccount $cred
}
Write-Host "Step 2 : Define Application Pool Account" -foregroundcolor Cyan
$AppPoolsearchCred
= "Domain\UserAccount" #Repalce The Text With Real Account
$cred =
Get-Credential $AppPoolsearchCred
$searchAppPoolAccount
= Get-SPManagedAccount $cred.UserName -ErrorAction SilentlyContinue
if($searchAppPoolAccount -eq $null)
{
$searchAppPoolAccount = New-SPManagedAccount $cred
}
<#One additional account that you will need is the default content access account.
this account should not be a managed account and therefore requires no
additional congiuration steps #>
#Get Search Service Instance if exist
#-----------------------------------------
Write-Host
"Step 3 : Get Search Service Instance if exist" -foregroundcolor Cyan
$searchSvc
= Get-SPEnterpriseSearchServiceInstance -Local
if($searchSvc
-eq $null)
{
throw "Unable to Retrive Search Service"
}
#Start the search service
#-----------------------------------------
Write-Host
"Step 4 : Start the search service" -foregroundcolor Cyan
if($searchSvc.Status
-ne "Online")
{
$searchSvc | Start-SPServiceInstance
Write-Host "the search service is now Online" -Foregroundcolor
Green
}
else
{
Write-Host "the search service is already Online" -Foregroundcolor
Yellow
}
#Configure the search Service
#-----------------------------------------
Write-Host
"Step 5 : Configure the search Service" -foregroundcolor Cyan
$contactEmail
= "mailAdress@SharePoint.com"
$connectionTimeOut
= "60"
$acknowledgementTimeOut
= "60"
$proxyType
= "Default"
$ignoreSSLWranings
= $false
$internetID
= $null
$performanceLevel
= "PartlyReduced"
Write-Host "Step 6 : Setting search service properties..." -foregroundcolor Yellow
while($true)
{
$svc
= Get-SPEnterpriseSearchService
$svc
| Set-SPEnterpriseSearchService -ServiceAccount
$searchSvcManagedAccount.UserName -ServicePassword $searchSvcAccount.Password
-ContactEmail $contactEmail -connectionTimeOut $connectionTimeOut
-acknowledgementTimeOut $acknowledgementTimeOut -proxyType $proxyType
-ignoreSSLWarnings $ignoreSSLWranings -internetIdentity $internetID
-performanceLevel $performanceLevel -ErrorAction SilentlyContinue
-ErrorVariable err
if($err)
{
if($err[0].Exception.Message -like "*update conflict")
{
Write-Warning "An Update conflict occured"
Start-Sleep 2
continue
}
throw $err
}
break
}
Write-Host " Configure search service ended " -foregroundcolor Green
#Create Search Service Application
#--------------------------------------------------
Write-Host
"Step 7 : Create $serviceAppName " -foregroundcolor Cyan
$searchApp = Get-SPEnterpriseSearchServiceApplication $serviceAppName -ErrorAction SilentlyContinue
$poolName = "Search Service Application Pool"
$AdminPoolName
= "Search Service Application Admin Pool"
$saAppPool = New-SPServiceApplicationPool -Name $poolName -Account $searchAppPoolAccount
$saAdminAppPool
= New-SPServiceApplicationPool -Name $AdminPoolName -Account
$searchAppPoolAccount
Write-Host "Creating Search Service Application Now... " -foregroundcolor yellow
$searchApp
= New-SPEnterpriseSearchServiceApplication -Name $serviceAppName
-ApplicationPool $saAppPool -AdminApplicationPool $saAdminAppPool
-DataBaseServer $dbServer -DataBaseName $searchDBName
Write-Host "Please wait while the Search Service Application are Creating... " -foregroundcolor yellow
Start-Sleep
-s 30
if($searchApp -ne $null)
{
Write-Host "Search Service Application Created Successfully ! "
-foregroundcolor Green
}
else
{
Write-Host "Search Service Application dosen't Created Successfully !
" -foregroundcolor Red
}
#Create the Service Application Proxy
#-----------------------------------------
Write-Host
"Step 7 : Create the Service Application Proxy" -foregroundcolor Cyan
$searchProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name "$serviceAppName Proxy" -SearchApplication $searchApp
Write-Host "Please wait while the Search Service Application are Creating... " -foregroundcolor yellow
Start-Sleep
-s 10
if($searchProxy -ne $null)
{
Write-Host "Search Service Application Proxy Created Successfully ! "
-foregroundcolor Green
}
else
{
Write-Host "Search Service Application Proxy dosen't Created Successfully
! " -foregroundcolor Red
}
#Configure the Administration Component
#-----------------------------------------------------
Write-Host
"Step 9 : Configure the Administration Component" -foregroundcolor
Cyan
$adminSearchInstance
= Get-SPEnterpriseSearchServiceInstance $adminServer
if($adminSearchInstance.Status
-ne "Online")
{
$adminSearchInstance | Start-SPServiceInstance
}
else
{
write-host
"Admin Search Instance is Online" -foregroundcolor Green
}
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
$admin |
Set-SPEnterpriseSearchAdministrationComponent -SearchServiceInstance
$adminSearchInstance
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
while(-not
$admin.Initialized)
{
Start-Sleep
10
$admin =
($searchApp | Get-SPEnterpriseSearchAdministrationComponent)
}
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance
$adminServer
Write-Host
" Configure Administration Component ended " -foregroundcolor Green
Start-Sleep
-s 5
#Create
the Crawl and Query Components
#-------------------------------------------------------
Write-Host
"Step 10 : Create the Crawl and Query Components" -foregroundcolor
Cyan
$initialCrawlTopology
= ($searchApp | Get-SPEnterpriseSearchCrawlTopology)
$initialQueryTopology
= ($searchApp | Get-SPEnterpriseSearchQueryTopology)
#Crawl
#-------
Write-Host
"=== Crawl Component ===" -foregroundcolor Cyan
$crawlTopology
= ($searchApp | New-SPEnterpriseSearchCrawlTopology)
$crawlDB
= Get-SPEnterpriseSearchCrawlDatabase -SearchApplication $searchApp
$crawlInstance
= Get-SPEnterpriseSearchServiceInstance $crawlServer
$crawlComponent
= New-SPEnterpriseSearchCrawlComponent -CrawlTopology $crawlTopology
-CrawlDatabase $crawlDB -SearchServiceInstance $crawlInstance
$crawlTopology
| Set-SPEnterpriseSearchCrawlTopology -Active
do
{
Start-Sleep
5
$crawlTopology
= $searchApp | Get-SPEnterpriseSearchCrawlTopology $crawlTopology
}
while($crawlTopology.State
-ne "Active")
Write-Host
" Configure Crawl Component ended " -foregroundcolor Green
<# It
is important to wait until the process of Crawl initiation will be finished
After it done you can initiate the query Component #>
#Query
#--------
Write-Host
"=== Query Component ===" -foregroundcolor Cyan
Start-Sleep
-s 300
$queryTopology
= ($searchApp | New-SPEnterpriseSearchQueryTopology -Partitions 1 )
$propDB
= Get-SPEnterpriseSearchPropertyDatabase -SearchApplication $searchApp
$indexPartition
= Get-SPEnterpriseSearchIndexPartition -QueryTopology $queryTopology
$indexPartition
| Set-SPEnterpriseSearchIndexPartition -PropertyDatabase $propDB
$svc =
Get-SPEnterpriseSearchServiceInstance $queryServer
$queryComponent
= New-SPEnterpriseSearchQueryComponent -queryTopology $queryTopology
-indexPartition $indexPartition -SearchServiceInstance $svc
$queryTopology
| Set-SPEnterpriseSearchqueryTopology -Active
do
{
Start-Sleep
5
$queryTopology
= $searchApp | Get-SPEnterpriseSearchqueryTopology $queryTopology
}
while($queryTopology.State
-ne "Active")
Write-Host
" Configure Query Component ended " -foregroundcolor Green
$initialCrawlTopology
| Remove-SPEnterpriseSearchCrawlTopology -confirm:$false
#
Activate the Topology
#-------------------------------
if($initialQueryTopology.State
-eq "Deactivating")
{
Write-Host
"Wait for Deactivating the Query Component" -foregroundcolor Yellow
do
{
}
while($initialQueryTopology.State -eq "Deactivating")
}
else
{
Start-Sleep -s 120
$initialQueryTopology | Remove-SPEnterpriseSearchQueryTopology -confirm:$false
}
Write-Host
" ======== The End ========" -foregroundcolor Green
Good Luck J
Ron Ness.
No comments:
Post a Comment