PowerShell:SharePoint 2013修补程序安装
#SharePoint
#PowerShell

powershell
阅读 78 收藏 0 点赞 0 评论 0

SharePoint2013PatchInstall.ps1
<#
$Metadata = @{
  Title = "SharePoint 2013 Patch Installation"
	Filename = "SharePoint2013PatchInstall.ps1"
	Description = "Install the cumulative update in less the time you'll do it manually"
	Tags = "sharepoint, powershell, 2013, cumulative, update"
	Project = ""
	Author = "Janik von Rotz"
	AuthorContact = "http://janikvonrotz.ch"
	CreateDate = "2013-06-24"
	LastEditDate = "2013-06-24"
	Version = "1.0.0"
	License = @'
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or
send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
'@
}
#>

#--------------------------------------------------#
# Ensure Patch is Present
#--------------------------------------------------#

$Patchfile = Get-ChildItem | where{$_.Extension -eq ".exe"} 
if($Patchfile -eq $null) 
{ 
	Write-Error "Unable to retrieve the file. Exiting Script"
	Return 
}

#--------------------------------------------------#
# Stop Search Services
#--------------------------------------------------#

# Checking Search services
$srchctr = 1 
$srch4srvctr = 1 
$srch5srvctr = 1

$srv4 = get-service "OSearch15" 
$srv5 = get-service "SPSearchHostController"

If(($srv4.status -eq "Running") -or ($srv5.status-eq "Running")) { 

	Write-Host "Choose 1 to Pause Search Service Application" -ForegroundColor Cyan 
	Write-Host "Choose 2 to leave Search Service Application running" -ForegroundColor Cyan 
	$searchappresult = Read-Host "Press 1 or 2 and hit enter"  
	Write-Host
	
	if($searchappresult -eq 1){ 

		$srchctr = 2 
		Write-Host "Pausing the Search Service Application" -foregroundcolor yellow 
		Write-Host "This could take a few minutes" -ForegroundColor Yellow 
		$ssa = get-spenterprisesearchserviceapplication 
		$ssa.pause() 
		
	}elseif($searchappresult -eq 2) { 

		Write-Host "Continuing without pausing the Search Service Application" 
		
	}else { 
		Write-Host "Run the script again and choose option 1 or 2" -ForegroundColor Red 
		Write-Host "Exiting Script" -ForegroundColor Red 
		Return 
	} 
}

Write-Host "Stopping Search Services if they are running" -foregroundcolor yellow 

if($srv4.status -eq "Running") { 

	$srch4srvctr = 2 
	set-service -Name "OSearch15" -startuptype Disabled 
	$srv4.stop() 
}

if($srv5.status -eq "Running"){ 

	$srch5srvctr = 2 
	Set-service "SPSearchHostController" -startuptype Disabled 
	$srv5.stop() 
}

do{ 
	$srv6 = get-service "SPSearchHostController" 
	
	if($srv6.status -eq "Stopped") { 
	
		$yes = 1 
	} 
	Start-Sleep -seconds 10 
	
}until($yes -eq 1)

Write-Host "Search Services are stopped" -foregroundcolor Green 
Write-Host

#--------------------------------------------------#
# Stop Other Services
#--------------------------------------------------#

Set-Service -Name "IISADMIN" -startuptype Disabled 
Set-Service -Name "appfabriccachingservice" -startuptype Disabled 
Set-Service -Name "SPTimerV4" -startuptype Disabled 
Write-Host "Gracefully stopping IIS W3WP Processes" -foregroundcolor yellow 
Write-Host 
iisreset -stop -noforce 
Write-Host "Stopping Services" -foregroundcolor yellow 
Write-Host

# Gracefully stopping Distributed Cache 
$srv1 = get-service "appfabriccachingservice" 

if($srv1.status -eq "Running") { 

	Write-Host "Gracefully stopping Distributed Cache, this could take a few minutes" -foregroundcolor Yellow
	Stop-SPDistributedCacheServiceInstance -Graceful 
	Write-Host "Distributed Cache disabled" 
	Write-Host 
}

$srv2 = get-service "SPTimerV4" 

if($srv2.status -eq "Running") {

	$srv2.stop()
}

Write-Host "Services are Stopped" -ForegroundColor Green 
Write-Host 
Write-Host


#--------------------------------------------------#
# Start patching
#--------------------------------------------------#
 
Write-Host "Patching now keep this PowerShell window open" -ForegroundColor Magenta 
Write-Host 
$starttime = Get-Date

$filename = $Patchfile.basename 
. .\$filename /passive

Start-Sleep -seconds 20 
$proc = get-process $filename 
$proc.WaitForExit()

$finishtime = get-date 
Write-Host 
Write-Host "Patch installation complete" -foregroundcolor green 
Write-Host


#--------------------------------------------------#
# Start Services
#--------------------------------------------------#

Write-Host "Starting Services Backup" -foregroundcolor yellow 
Set-Service -Name "appfabriccachingservice" -startuptype Automatic 
Set-Service -Name "SPTimerV4" -startuptype Automatic 
Set-Service -Name "IISADMIN" -startuptype Automatic

# Grabbing local server and starting appfabric service
$servername = hostname 
$server = get-spserver $servername 
$dcache = Get-SPServiceInstance | where{($_.TypeName -eq "Distributed Cache") -and ($_.Server -eq $server)} 

if($dcache.status -eq "Disabled") { 

	Write-Host "Starting Distributed Cache Service" -foregroundcolor "Yellow" 
	$dcache.start() 
}

$srv2 = get-service "SPTimerV4" 
$srv2.start() 
$srv3 = get-service "IISADMIN" 
$srv3.start() 
$srv4 = get-service "OSearch15" 
$srv5 = get-service "SPSearchHostController"

# Ensuring Search Services were stopped by script before Starting" 
if($srch4srvctr -eq 2){ 

	set-service -Name "OSearch15" -startuptype Automatic 
	$srv4.start() 
} 
if($srch5srvctr -eq 2) { 

	Set-service "SPSearchHostController" -startuptype Automatic 
	$srv5.start() 
}

# Resuming Search Service Application if paused 
if($srchctr -eq 2){ 

	Write-Host "Resuming the Search Service Application" -foregroundcolor yellow 
	$ssa = get-spenterprisesearchserviceapplication 
	$ssa.resume() 
}

Write-Host "Services are Started" -foregroundcolor green 
Write-Host 
Write-Host 
Write-Host "Script Duration" -foregroundcolor yellow 
Write-Host "Started: " $starttime -foregroundcolor yellow 
Write-Host "Finished: " $finishtime -foregroundcolor yellow 
Write-Host "Script Complete"
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号