Я только начинаю использовать синтаксис конвейера Jenkinsfile, поэтому, вероятно, я упустил это из руководства по функциям. У меня есть шаг со сценарием, который запускает текстовый блок как сценарий powershell, он отлично работает, как есть, но я хотел бы отформатировать файл с начальным пробелом, чтобы все выровнялось, НО иметь фактически выполненный код обрезать пробелы. В основном моя болевая точка — это строка «@», где powershell требует, чтобы у нее не было ведущего пробела, поэтому она сидит в одиночестве.
script {
def ps_out = powershell(returnStdout: true, script: '''
$pass = "$env:Remoting_Password" | ConvertTo-SecureString -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PsCredential("$env:Remoting_Username",$pass)
$scriptBlock = @"
if (-Not(Get-WmiObject -Class Win32_Service -Filter "Name=\'$env:ServiceName\'"))
{
If ((Get-Service $env:ServiceName).Status -eq 'Running') {
Stop-Service -Name $env:ServiceName
}
}
"@
$sb = [scriptblock]::Create($scriptBlock)
Write-Output "--Script block Start--"
Write-Output $sb.ToString()
Write-Output "--Script block End--"
$sess = New-PSSession -ComputerName $env:TargetServer -Credential $Cred
Invoke-Command -Session $sess -ScriptBlock $sb
Remove-PSSession -Session $sess
''')
println ps_out
}