Когда вы используете параметр -File
интерфейса командной строки PowerShell , аргументы , передаваемые в сценарий, обрабатываются как литералы , поэтому, если вы вызывая командную строку не из PowerShell , $env:APP_VERSION_NUMBER
является , а не расширенным.
Чтобы заставить target PowerShell обрабатывать аргументы, вы должны использовать -Command
вместо -File
:
powershell -Command .\Build.ps1 -Version $env:APP_VERSION_NUMBER
Однако теперь, когда мы знаем, что вы вызываете командную строку через cmd.exe
(пакетный файл) из Jenkins (шаг сборки типа Execute Windows batch command
) более простой ответ - на позволить cmd.exe
расширить ссылку на переменную среды, используя ее синтаксис %<envVarName>%
:
powershell -File .\Build.ps1 -Version "%APP_VERSION_NUMBER%"
Примечание. Заключение ссылки на переменную среды в "..."
не является строго обязательным для номера версии, но является хорошей привычкой для формирования, поэтому значения со встроенными пробелами или другими метасимволами оболочки также передаются правильно .