Я использую Jenkins для развертывания. Я хотел запустить сценарий powershell, который копирует некоторые файлы. Я установил плагин «Windows Powershell» для jenkins, который выполнит скрипт powershell. Мой сценарий Powershell выглядит нижеjenkins не может выполнить powershell в программных файлах
param (
[string] $targetEnvironment,
[switch] $WhatIf,
[switch] $Compare)
try
{
#do smething here
}
catch
{
}
Этот скрипт отлично работает, когда я выполняю его вручную. Однако при запуске скрипта, используя следующую команду в окне ввода плагина я получаю ошибку
Обратите внимание, что, если я скопировал папку «deploymentscript» в «C: \ deploymentscript», а затем измените путь в плагине окно, тогда работа выполняется нормально. Это не работает, когда его выполнение в рамках программных файлов
И.М. ошибка получает
First time build. Skipping changelog.
[workspace] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\CODESC~1\AppData\Local\Temp\hudson2119904511537985474.ps1'"
At C:\Users\username\AppData\Local\Temp\hudson2119904511537985474.ps1:1 char:119
+ ... etaTaskar.ps1' -targetEnvironment demo
+ ~~~~~~~~~~~~~~~~~~
Unexpected token '-targetEnvironment' in expression or statement.
At C:\Users\username\AppData\Local\Temp\hudson2119904511537985474.ps1:1 char:138
+ ... getEnvironment demo
+ ~~~~
Unexpected token 'demo' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
Build step 'Windows PowerShell' marked build as failure
Finished: FAILURE
EDIT1
@petrik Вы правы, пространство в папке "Program Files (x86)" вызывает проблема. Раствор должен использовать следующий foormat
&("C:\Program Files (x86)\Jenkins\jobs\MyJob\workspace\crconfig\deploymentscript\Deploy.ps1") -targetEnvironment demo
и что работает.
Теперь на основании статьи here, если не удается scrit PowerShell я хочу работу в Дженкин на провал тоже Так я должен сказать Хадсон назвать сценарий PowerShell образует окна пакетного задания.
powershell "& {&('C:\Program Files (x86)\Jenkins\jobs\MyJob\workspace\crconfig\deploymentscript\Deploy.ps1') -targetEnvironment $Env:EnvironmentParam; exit $lastexitcode }"
Я не уверен, действительно ли мне это нужно в моем случае ??
Попробуйте удвоить? – Engineer
Я предполагаю, что это не факт, что он работает от «Program Files», но тот факт, что он работает из пути к каталогу, в котором есть пробелы. Что произойдет, если вы вручную выполнили эту команду (вся команда, как это было у jenkins)? – Petrik
Другой вариант - сделать что-то вроде: $ script = 'c: \ Program Files (x86) \ Jenkins \ jobs \ MyJob \ workspace \ crconfig \ deploymentscript \ deploy.ps1'; & $ script -targetEnvironment demo. – Petrik