の作り方、のは、私はスクリプトリソースを持っているとしましょう:例えばリソースレベル変数
configuration ChocolateyServer {
node localhost {
Script ChocolateyPackages {
SetScript = {
$tools = 'googlechrome,notepadplusplus,7zip,microsoftwse,octopusdeploy.tentacle,sqlserver-cmdlineutils'
foreach($tool in $tools.Split(',')) {
if(($packages | ? { $_.ToString().ToLower().StartsWith($tool) }).Count -eq 0) {
choco install $tool -y
}
}
}
TestScript = {
$tools = 'googlechrome,notepadplusplus,7zip,microsoftwse,octopusdeploy.tentacle,sqlserver-cmdlineutils'
$packages = (choco list -lr).ToLower()
foreach($tool in $tools.Split(',')) {
if(($packages | ? { $_.ToString().ToLower().StartsWith($tool) }).Count -eq 0) {
return $false
}
}
return $true
}
GetScript = { return @{ Result = "nothing" } }
}
}
}
私はコードの重複を避けるために、これらの二つの別々の機能のうち、$tools
を引くしたいと思います。 $tools
をスクリプトリソースに追加して、2度定義することなく、これらの2つの機能の間で共有することができれば幸いです。
しかし、それを実行しようとすると、私にエラーを与える:
An attribute name for resource 'Script' was found that is not valid. An attribute name must be a simple string, and cannot contain variables or expressions. Replace '$tools' with a simple string.
どのように私はこのコードを共有することができますか?