例如,假设我有一个脚本资源:
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
到我的脚本资源并在这两个函数之间共享它,而不必定义它两次。
但是,尝试这样做会给我一个错误:
发现资源“脚本”的属性名称无效。属性名称必须是简单的字符串,并且不能包含变量或表达式。用一个简单的字符串替换 '$tools'。
如何共享此代码?