Aby połączyć się PowerScript z Groovy-Script:
- trzeba użyć komendy
bat
.
- Po tym należy upewnić się, że zmienna błędu (
errorlevel
) zostanie poprawnie zwrócona (EXIT 1
powinna skutkować zadaniem FAILED
).
- Wreszcie, aby być zgodnym z wtyczką PowerShell, musisz być pewny, że zostanie rozważona
$LastExitCode
.
- Zauważyłem, że "powershell" jest teraz dostępny w potoku, ale ponieważ ma kilka problemów, wolę ten wariant. Nadal czekam, że działa stabilnie.
Z tego porpuse Pisałem trochę groovy metodę, która może być zintegrowanie w dowolnym rurociągu skryptu:
def PowerShell(psCmd) {
psCmd=psCmd.replaceAll("%", "%%")
bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$psCmd;EXIT \$global:LastExitCode\""
}
[EDIT] Dodałem QWVRWVGPEQFKPI UTF8: świetnie współpracuje z Server 2016 i Win10 [/ EDIT] [EDIT] dodałem '%' Maska [/ EDIT]
W swojej Pipeline-Script można następnie połączyć swój skrypt tak:.
stage ('Call Powershell Script')
{
node ('MyWindowsSlave') {
PowerShell(". '.\\disk-usage.ps1'")
}
}
Najlepszą rzeczą w tej metodzie jest to, że możesz zadzwonić pod numer CmdLet
bez konieczności wykonywania tej czynności w Skrypcie, co jest najlepszą praktyką. PS1
Zaproszenie do zdefiniowania CmdLet
An następnie wywołać CmdLet
PowerShell(". '.\\disk-usage.ps1'; du -Verbose")
- Nie zapomnij użyć withEnv() wtedy są lepsze niż w pełni kompatybilne z wtyczką PowerShell.
- odroczyć skrypt z
.
, aby upewnić się, że krok nie powiodło się, gdy skrypt zwraca kod błędu (należy preferować), należy użyć &
, jeśli nie przejmujesz się tym.
, który działa na jednym z moich węzłów systemu Windows, ale nie na drugim. Czy jest coś, co musisz zrobić z systemem operacyjnym, aby go włączyć? –
Polecenie sh uruchomi sesję bash, również z Window Slave, która nie jest środowiskiem PowerShell. Możesz wypróbować 'sh ', gdzie ps.exe'' lub' sh' echo $ SHELL'' w twoim Pipeline. Zobacz: [link] (https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script) Pamiętaj, że 'ps.exe'nie musi być zainstalować na niewolniku systemu Windows. – elou