0

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

(1): base_tasks.ps1:

properties{ 

$a = "hello"

$b = "hi"

}

task One{
  Write-Host $a
}

(2): 安装.ps1

Include .\base_tasks.ps1

properties{ 

$a = "Goodbye"

$b = "Adjeu"

}

task default -depends One

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

  • 跳舞
4

1 回答 1

0

源代码来看,它看起来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
        }
    }
于 2012-10-14T16:36:49.287 回答