55 lines
1.9 KiB
PowerShell
55 lines
1.9 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$serverName,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$accountName,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$accountPassword,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$executablePath,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$serverType,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$serverAction,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$applicationBaseUrl,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[string]$environmentVariables
|
|
)
|
|
|
|
Write-Host "`nExecuting deployment helper script on machine '$serverName'"
|
|
Write-Host "`nStarting a powershell session to machine '$serverName'"
|
|
|
|
$securePassword = ConvertTo-SecureString $accountPassword -AsPlainText -Force
|
|
$credentials= New-Object System.Management.Automation.PSCredential ($accountName, $securePassword)
|
|
$psSession = New-PSSession -ComputerName $serverName -credential $credentials
|
|
|
|
$remoteResult="0"
|
|
if ($serverAction -eq "StartServer")
|
|
{
|
|
Write-Host "Starting the application on machine '$serverName'"
|
|
$startServerScriptPath = "$PSScriptRoot\StartServer.ps1"
|
|
$remoteResult=Invoke-Command -Session $psSession -FilePath $startServerScriptPath -ArgumentList $executablePath, $serverType, $serverName, $applicationBaseUrl, $environmentVariables
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Stopping the application on machine '$serverName'"
|
|
$stopServerScriptPath = "$PSScriptRoot\StopServer.ps1"
|
|
$serverProcessName = [System.IO.Path]::GetFileNameWithoutExtension($executablePath)
|
|
$remoteResult=Invoke-Command -Session $psSession -FilePath $stopServerScriptPath -ArgumentList $serverProcessName, $serverType, $serverName
|
|
}
|
|
|
|
Remove-PSSession $psSession
|
|
|
|
# NOTE: Currenty there is no straight forward way to get the exit code from a remotely executing session, so
|
|
# we print out the exit code in the remote script and capture it's output to get the exit code.
|
|
$finalExitCode=$remoteResult[$remoteResult.Length-1]
|
|
exit $finalExitCode |