私は専門家ではありませんが、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
)
ビルドファイル、タスクのリスト、.NET Frameworkのバージョン、タスクのドキュメントを出力するかどうかの4つのパラメーターがあります。私は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...
}
次に、PublishForLiveまたはPublishForStagingのどちらか必要な方を使用してpsakeを呼び出します。
powershell -NoExit -ExecutionPolicy Unrestricted -Command "& {Import-Module .\tools\psake\psake.psm1; Invoke-psake .\psake-common.ps1 PublishForLive }"
しかし、それは私にはうまくいかないようです!タスクの前提条件に$environment変数を設定しても、効果がないようです。まだこの仕事をしようとしています...