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