Введите параметры командной строки в, говорил

Я хотел бы ввести параметры командной строки в мой, говорил сценарий сборки как:.\build.ps1 Развертывают среду = "разработка"

Но говорил, будет рассматривать каждый аргумент как Задачу и ответит, что "задача не делает существует"

Действительно ли возможно ввести параметры командной строки в, говорил?

build.ps1 -->
Import-Module '.\psake.psm1'
Invoke-psake '.\tasks.ps1' $args
Remove-Module psake
7
задан orjan 5 February 2010 в 16:14
поделиться

3 ответа

Последний выпуск psake теперь поддерживает передачу параметров в Invoke-psake, например

Invoke-psake .\parameters.ps1 -parameters @{"p1"="v1";"p2"="v2"} 

Эта функция только что добавлена. :)

10
ответ дан 6 December 2019 в 23:05
поделиться

Я не эксперт, но не думаю, что можно передавать аргументы Invoke-Psake. Глядя на последний источник для Psake, параметры функции Invoke-Psake следующие:

param(
    [Parameter(Position=0,Mandatory=0)]
    [string]$buildFile = 'default.ps1',
    [Parameter(Position=1,Mandatory=0)]
    [string[]]$taskList = @(),
    [Parameter(Position=2,Mandatory=0)]
    [string]$framework = '3.5',   
    [Parameter(Position=3,Mandatory=0)]
    [switch]$docs = $false    
    )

Есть 4 параметра, ваш build-файл, список задач, .NET версия фреймворка, нужно ли выводить документы по вашим задачам. Я новичок в powershell и psake и пытаюсь сделать то же самое, я экспериментирую с тем, чтобы сделать что-то подобное в моем скрипте, чтобы достичь того же самого:

properties { 
   $environment = "default"
}

task PublishForLive -precondition { $environment = "Live"; return $true; } -depends Publish {

}

task PublishForStaging -precondition { $environment = "Staging"; return $true; } -depends Publish {

}

task Publish {
    Write-Host "Building and publishing for $environment environment"
    #Publish the project...
}

Затем вызываю psake с помощью PublishForLive или PublishForStaging, что бы мне ни понадобилось:

powershell -NoExit -ExecutionPolicy Unrestricted -Command "& {Import-Module .\tools\psake\psake.psm1; Invoke-psake .\psake-common.ps1 PublishForLive }"

Но, похоже, это не работает на меня! Установка переменной $environment в предусловии задачи, кажется, не имеет никакого эффекта. Все еще пытаюсь заставить это работать...

0
ответ дан 6 December 2019 в 23:05
поделиться

Глобальная переменная решит мою проблему на данный момент, и с помощью только одной ссылки на $ global: arg_environent ее будет легко изменить, если я найду лучший способ ввести свойства.

build.ps1

param(
    [Parameter(Position=0,Mandatory=0)]
    [string]$task,
    [Parameter(Position=1,Mandatory=0)]
    [string]$environment = 'dev'
)

clear
$global:arg_environent = $environment
Import-Module .\psake.psm1 
Invoke-psake tasks.ps1 $task
Remove-Module psake

tasks.ps1

properties {
    $environment = $global:arg_environent
}

task default -depends Deploy

task Deploy {  
   echo "Copy stuff to $environment"
}
1
ответ дан 6 December 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: