У меня есть несколько функций, которые вызываются либо из Jenkins как часть конвейера, они также вызываются из теста pester или, наконец, их можно вызывать из консоли powershell.Проблема, с которой я столкнулся на самом деле, связана с тем, что Дженкинс, похоже, не справляется с выводом записи так, как мне кажется.
Итак, что я делаю, так это создание логического параметра, который позволит мне выбирать, завершу ли я свою функцию кодом выхода или сообщением возврата.Код завершения будет использоваться моей конвейерной логикой и сообщением возврата для остальных?
Есть ли альтернативный подход, который я должен использовать, это похоже на хак.
function Get-ServerPowerState
{
[CmdletBinding()]
param
(
[string[]]$ilo_ip,
[ValidateSet('ON', 'OFF')]
[string]$Status,
[boolean]$fail
)
BEGIN
{
$here = Split-Path -Parent $Script:MyInvocation.MyCommand.Path
$Credentials = IMPORT-CLIXML "$($here)\Lib\iLOCred.xml"
}
PROCESS
{
foreach ($ip in $ilo_ip)
{
New-LogEntry -Message ("Getting current powerstate " + $ip)
If (Test-Connection -ComputerName $ip.ToString() -Count 1 -Quiet)
{
$hostPower = Get-HPiLOhostpower -Server $ip -Credential
$Credentials -DisableCertificateAuthentication
}
}
}
END
{
If($fail){
New-LogEntry -Message "Script been set to fail with exit code" -Log Verbose
New-LogEntry -Message "The host is powered - $($HostPower.Host_Power)" -Log Verbose
If($hostPower.HOST_POWER -match $Status)
{
Exit 0
}
else {
Exit 1
}
}
else {
New-LogEntry -Message "Script been set to NOT fail with exit code" -Log Verbose
New-LogEntry -Message "The host is powered - $($HostPower.Host_Power)" -Log Verbose
If($hostPower.HOST_POWER -match $Status)
{
return 0
}
else {
return 1
}
}
}
}