2012-10-14 85 views
0

我是新來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
+0

如果不知道這究竟回答您的問題:https://github.com/psake/psake/wiki/How-can-I-override -a-property-defined-in-my-psake-script%3F –

回答

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 
     } 
    } 
+1

哦,好的。我明白,謝謝澄清此事。所以沒有辦法實現我需要的東西?或者我用錯誤的方式使用psake :) – Piguy