Я не эксперт, но я не думаю, что можно передать аргументы 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 параметра, ваш файл сборки, список задач, версия платформы .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 в предварительном условии задачи, кажется, не имеет никакого эффекта. Все еще пытаюсь сделать эту работу ...