TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
C# Corner
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Powershell Script to Clear SharePoint Config Cache Files
Karthik Muthu Karuppan
Feb 12
2015
Code
4.4
k
0
0
facebook
twitter
linkedIn
Reddit
WhatsApp
Email
Bookmark
expand
ClearSPConfigCacheFi
$LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
$LogFile =
".\ClearSPConfigCachePatch-$LogTime.rtf"
# Add SharePoint PowerShell Snapin
if
( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $
null
) {
Add-PSSnapin Microsoft.SharePoint.Powershell
}
$scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location $scriptBase
#Deleting any .rtf files in the scriptbase location
$FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf
if
($FindRTFFile)
{
foreach($file
in
$FindRTFFile)
{
remove-item $file
}
}
start-transcript $logfile
Write-host
"##############Following steps will be involved################"
-fore green
write-host
"Step 1 - Stop the timerservice"
-fore cyan
write-host
"Step 2 - Take the backup of config cache file"
-fore cyan
write-host
"Step 3 - Delete the XML files"
-fore cyan
write-host
"Step 4 - Reset the cache.ini file"
-fore cyan
write-host
"Step 5 - Start the SP timerservice"
-fore cyan
Write-host
"##############Above steps will be involved##################"
-fore green
$global:timerServiceName =
"SharePoint 2010 Timer"
$global:timerServiceInstanceName =
"Microsoft SharePoint Foundation Timer"
# Get the local farm instance
[Microsoft.SharePoint.Administration.SPFarm]$farm = [Microsoft.SharePoint.Administration.SPFarm]::get_Local()
Function StopSPTimerServicesInFarm([Microsoft.SharePoint.Administration.SPFarm]$farm)
{
Write-Host
""
foreach($server
in
$farm.Servers)
{
foreach($instance
in
$server.ServiceInstances)
{
# If the server has the timer service then stop the service
if
($instance.TypeName -eq $timerServiceInstanceName)
{
[string]$serverName = $server.Name
Write-Host
"Stop "
$timerServiceName
" service on server: "
$serverName -fore yellow
$service = Get-WmiObject -ComputerName $serverName Win32_Service -Filter
"DisplayName='$timerServiceName'"
$serviceInternalName = $service.Name
sc.exe \\$serverName stop $serviceInternalName > $
null
# Wait until this service has actually stopped
write-host
"Waiting for '$timerServiceName' service on server: "
$serverName
" to be stopped"
-fore yellow
do
{
Start-Sleep 1
Write-Host -foregroundcolor DarkGray -NoNewLine
"."
$service = Get-WmiObject -ComputerName $serverName Win32_Service -Filter
"DisplayName='$timerServiceName'"
}
while
($service.State -ne
"Stopped"
)
write-host
" '$timerServiceName' service on server: "
$serverName
" stopped successfully"
-fore green
break
;
}
}
}
Write-Host
""
}
Function BackupSPConfigFiles([Microsoft.SharePoint.Administration.SPFarm]$farm)
{
write-host
""
write-host
"Backup SP config cache files"
-fore yellow
foreach($server
in
$farm.servers)
{
foreach($instance
in
$server.ServiceInstances)
{
if
($instance.TypeName -eq $timerServiceInstanceName)
{
$ServerName = $server.name
$FolderName = $servername +
"SPConfigCacheBackup"
write-host
"Creating a folder to hold the backup files"
-fore magenta
write-host
"Checking whether the folder aleady exist"
if
(Test-path $scriptbase\$FolderName)
{
write-host
"Folder already exists and the script is deleting it......"
remove-item $scriptbase\$FolderName -recurse -confirm:$
false
write-host
"Existing folder deleted"
-fore green
}
else
{
write-host
"Folder does not exist"
}
New-Item $scriptbase\$FolderName -type directory
write-host
"New folder created to hold the backup files"
-fore magenta
write-host
"Backup of SP config files for the server "
$serverName
" started ...... "
-fore yellow
$path =
"\\" + $serverName + "
\c$\ProgramData\Microsoft\SharePoint\Config"
Copy-Item $path -Destination $scriptbase\$FolderName -recurse
write-host
"SP config cache files backed up for the server "
$serverName
" Sucessfully..."
-fore green
}
}
}
write-host
"SP config caches files are backed up"
-fore green
write-host
""
}
Function DeletingXMLFiles([Microsoft.SharePoint.Administration.SPFarm]$farm)
{
Write-host
""
write-host
"Deleting SP config cache XML files from each server in the farm"
-fore yellow
$path =
""
foreach($server
in
$farm.servers)
{
foreach($instance
in
$server.ServiceInstances)
{
if
($instance.TypeName -eq $timerServiceInstanceName)
{
$serverName = $server.Name
write-host
"Deleting SP config cache files from the server "
$servername -fore magenta
$path =
"\\" + $serverName + "
\c$\ProgramData\Microsoft\SharePoint\Config\*-*\*.xml"
remove-item -path $path -force
write-host
"SP config cache files deleted on the server "
$servername -fore magenta
break
}
}
}
write-host
"SP config cache XML files from each server in the farm is deleted successfully......"
-fore green
write-host
""
}
Function ResetTimerCache([Microsoft.SharePoint.Administration.SPFarm]$farm)
{
write-host
""
write-host
"Reseting the value of timer cache to 1"
-fore yellow
$path =
""
foreach($server
in
$farm.servers)
{
foreach($instance
in
$server.ServiceInstances)
{
if
($instance.TypeName -eq $timerServiceInstanceName)
{
$serverName = $server.Name
write-host
"Reseting the value of timer cache file in server "
$serverName -fore magenta
$path =
"\\" + $serverName + "
\c$\ProgramData\Microsoft\SharePoint\Config\*-*\cache.ini"
Set-Content -path $path -Value
"1"
write-host
"Value of timer cache file in server "
$serverName
" is resetted to 1"
-fore magenta
break
}
}
}
write-host
"The value of timer cache is resetted to 1 in all the SP servers in the farm"
-fore green
write-host
""
}
Function StartSPTimerServicesInFarm([Microsoft.SharePoint.Administration.SPFarm]$farm)
{
Write-Host
""
foreach($server
in
$farm.Servers)
{
foreach($instance
in
$server.ServiceInstances)
{
# If the server has the timer service then stop the service
if
($instance.TypeName -eq $timerServiceInstanceName)
{
[string]$serverName = $server.Name
Write-Host
"Start "
$timerServiceName
" service on server: "
$serverName -fore yellow
$service = Get-WmiObject -ComputerName $serverName Win32_Service -Filter
"DisplayName='$timerServiceName'"
$serviceInternalName = $service.Name
sc.exe \\$serverName start $serviceInternalName > $
null
# Wait until this service starts running
write-host
"Waiting for "
$timerServiceName
" service on server: "
$serverName
" to be started"
-fore yellow
do
{
Start-Sleep 1
Write-Host -foregroundcolor DarkGray -NoNewLine
"."
$service = Get-WmiObject -ComputerName $serverName Win32_Service -Filter
"DisplayName='$timerServiceName'"
}
while
($service.State -ne
"Running"
)
write-host $timerServiceName
" service on server: "
$serverName
" started successfully"
-fore green
break
;
}
}
}
Write-Host
""
}
#############Calling functions################
StopSPTimerServicesInFarm $farm
BackupSPConfigFiles $farm
DeletingXMLFiles $farm
ResetTimerCache $farm
StartSPTimerServicesInFarm $farm
##########################################
write-host
"SCRIPT COMPLETED"
-fore cyan
stop-transcript
sharepoint