在其他psake脚本中包含psake脚本时覆盖属性

时间:2012-10-14 15:23:35

标签: powershell properties build task psake

我是psake的新手,我有这个问题:我有2个psake脚本:

(1):base_tasks.ps1:

properties{ 

$a = "hello"

$b = "hi"

}

task One{
  Write-Host $a
}

(2):install.ps1

Include .\base_tasks.ps1

properties{ 

$a = "Goodbye"

$b = "Adjeu"

}

task default -depends One

现在,是否可以覆盖文件1中的属性和变量?我想将文件1用作“基本任务”,并在install.ps1中使用这些任务并覆盖属性。或者我必须以另一种方式做到这一点?我将调用install.ps1并使用install.ps1中的$ a和$ b。

  • DanceAlot

1 个答案:

答案 0 :(得分:0)

source开始,Properties只是一个函数:

function Properties {
    [CmdletBinding()]
    param(
        [Parameter(Position=0,Mandatory=1)][scriptblock]$properties
    )
    $psake.context.Peek().properties += $properties
}

因此,当您再次调用它时,它将再次添加属性。

然后将属性转换为如下变量:

foreach ($key in $properties.keys) {
        if (test-path "variable:\$key") {
            set-item -path "variable:\$key" -value $properties.$key | out-null
        }
    }