forked from microsoft/Code-Search
-
Notifications
You must be signed in to change notification settings - Fork 0
/
WipeOutAndResetElasticSearch.ps1
106 lines (91 loc) · 2.9 KB
/
WipeOutAndResetElasticSearch.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
function IsCurrentUserAdmin
{
[CmdletBinding()]
param()
If (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
return $true
}
return $false
}
function IsResetConfirm
{
[OutputType([boolean])]
Param
(
[string]$message
)
Write-Host $message -NoNewline -ForegroundColor Magenta
$confirm = Read-Host
if ($confirm.ToUpper().StartsWith(“Y”))
{
return $true
}
return $false
}
function GetElasticsearchInstallPath
{
param
(
[string] $serviceName
)
$output = Get-WmiObject win32_service | ?{$_.Name -like $serviceName} | select PathName
if($output)
{
$pathTokens = $output.PathName -split '"'
$servicePath = if ($pathTokens.Length -gt 1) { $pathTokens[1] } else { ($output.PathName -split ' ')[0] }
$servicePath = Split-Path -Path $servicePath
}
return $servicePath
}
if(-not (IsCurrentUserAdmin))
{
Write-Error "Run the script with Admin privileges"
Exit
}
$message = "This can be fatal!!. It will delete current indexed data for all the collections. Do you want to continue - Yes(Y) or No(N)? "
if(IsResetConfirm($message))
{
# Getting the install path of the Team Foundation Server
$serviceName = 'elasticsearch-service-x64'
$servicePath = GetElasticsearchInstallPath($serviceName)
if(-not $servicePath)
{
$ESIndexLocation = $env:SEARCH_ES_INDEX_PATH
if(-not $ESIndexLocation)
{
Remove-Item -Recurse -Force -Path $ESIndexLocation
Write-Host "Cleaned up the index folder $ESIndexLocation" -ForegroundColor Green
}
else
{
Write-Host "Could not find ElasticSearch service or data. Exiting cleanup" -ForegroundColor Yellow
}
}
else
{
[System.ENVIRONMENT]::CurrentDirectory = $pwd
Write-Host "Found ElasticSearch at $servicePath" -ForegroundColor Green
Push-Location
cd $servicePath
$outputService = .\Service.bat stop
Write-Host $outputService -ForegroundColor Yellow
if($outputService -like '*failed*')
{
Write-Host "Failed to stop service. Exiting cleanup" -ForegroundColor Yellow
}
else
{
$ESIndexLocation = $env:SEARCH_ES_INDEX_PATH
Remove-Item -Recurse -Force -Path $ESIndexLocation
Write-Host "Cleaned up the index folder $ESIndexLocation" -ForegroundColor Green
$outputService = .\Service.bat start
Write-Host $outputService -ForegroundColor Yellow
}
Pop-Location
}
}
else
{
Write-Warning "Exiting! ElasticSearch was not reset."
}