Reindex Jira from Jenkins - JoelRochambeau/Powershell GitHub Wiki
<# .Synopsis This script uses Jira API to start a background reindex. .DESCRIPTION This script is intended to force Jira HTTPS servers to perform reindex from Jenkins. Jenkins is required to pass svc_jira_adreader to the server. Server is logged into via a invoke session using the svc_jira_adreader account, it then uses the svc_jira_adreader account to perform a API web call over ssl. SSL certificate is being ignored if presented. Passing arguments to the script is required for System Hostnames, this is done with the configuration file as a string.
.EXAMPLE Get-Pending-Reboot.ps1 -ConfigurationFilePath ".\svc_sp_pltscripts.txt"
.NOTES Originally written by Joel Rochambeau on 2/14/2018
#>
[CmdletBinding()] Param( #Specifies the path to the configuration file. If there is no path listed, you will be prompted to enter one. [Parameter(Position=0, Mandatory=$true)] [String]$ConfigurationFilePath )
[int]$ExitCode = 0
$configFilePath = $(Split-Path -parent $MyInvocation.MyCommand.Definition) + $ConfigurationFilePath;
#Check for config file $confFileExists = Test-Path -Path $configFilePath;
[string[]]$checkConf = ""; if ($confFileExists) {
$ServerNames = Get-Content -Path $(Resolve-Path -Relative $configFilePath);
} else { Write-Error "Cannot find configuration file: $configFilePath`nExiting..."; Exit 1; }
#Argument from Jenkins to pass the SeverNames.
#Credential configuration required for Jenkins to pass the Server Account# $pass=$ENV:JiraPassword | ConvertTo-SecureString -asPlainText -Force $JiraAccesscredential = New-Object System.Management.Automation.PSCredential($ENV:JiraUserName,$pass)
$pass=$ENV:Password | ConvertTo-SecureString -asPlainText -Force $ServerAccesscredential = New-Object System.Management.Automation.PSCredential($ENV:UserName,$pass)
#Resets Array to null and Initializes $ServerRebootStatus = @()
#--------------------------------End Variables --------------------#
#For each computer in the server argument passed from jenkins Foreach ($Computer in $ServerNames) { write-host "$Computer Has been Checked"
#Perform remote access via Invoke to perform regkey checks, if regkey exists value returned is either false or true $ServerRebootCheck = Invoke-Command -ComputerName $Computer -Credential $ServerAccesscredential -ScriptBlock {
$credential = $args[0]
$Hostname = hostname
write-host "Performing Jira Reindex for $Hostname"
$unsecureCreds = $credential.GetNetworkCredential().Password
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($credential.UserName):$unsecureCreds"))
Remove-Variable unsecureCreds
$headers = @{
"Authorization" = "Basic " + $base64AuthInfo
"Content-Type"="application/json"}
$requestUri = "http://localhost/rest/api/2/reindex"
Invoke-RestMethod -uri $requestUri -method POST -Headers $headers
} -args $JiraAccesscredential #End Invoke
} #End Foreach