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
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 に答える