社内アプリケーションを構成するために PowerShell Desired State Configuration スクリプトを機能させるのに苦労しています。問題の根本は、構成データを ScriptResource に渡すことができないように見えることです (少なくとも、私がやろうとしている方法では)。
私のスクリプトは、社内アプリケーションの構成フォルダーを作成し、いくつかの設定をファイルに書き込むことになっています。
configuration MyApp {
param (
[string[]] $ComputerName = $env:ComputerName
)
node $ComputerName {
File ConfigurationFolder {
Type = "Directory"
DestinationPath = $Node.ConfigFolder
Ensure = "Present"
}
Script ConfigurationFile {
SetScript = {
write-verbose "running ConfigurationFile.SetScript";
write-verbose "folder = $($Node.ConfigFolder)";
write-verbose "filename = $($Node.ConfigFile)";
[System.IO.File]::WriteAllText($Node.ConfigFile, "enabled=" + $Node.Enabled);
}
TestScript = {
write-verbose "running ConfigurationFile.TestScript";
write-verbose "folder = $($Node.ConfigFolder)";
write-verbose "filename = $($Node.ConfigFile)";
return (Test-Path $Node.ConfigFile);
}
GetScript = { @{Configured = (Test-Path $Node.ConfigFile)} }
DependsOn = "[File]ConfigurationFolder"
}
}
}
参考までに、私の構成データは次のようになります。
$config = @{
AllNodes = @(
@{
NodeName = "*"
ConfigFolder = "C:\myapp\config"
ConfigFile = "C:\myapp\config\config.txt"
}
@{
NodeName = "ServerA"
Enabled = "true"
}
@{
NodeName = "ServerB"
Enabled = "false"
}
)
}
そして、次のようにDSCを適用しています:
$mof = MyApp -ConfigurationData $config;
Start-DscConfiguration MyApp –Wait –Verbose;
この構成を適用すると、フォルダーは問題なく作成されますが、構成ファイルで何もできません。以下の出力を見ると、ConfigurationFile / TestScript のスコープ内で $Node 変数が null であるためであることは明らかですが、そのブロック内から参照する方法がわかりません。
LCM: [ Start Resource ] [[Script]ConfigurationFile]
LCM: [ Start Test ] [[Script]ConfigurationFile]
[[Script]ConfigurationFile] running ConfigurationFile.TestScript
[[Script]ConfigurationFile] node is null = True
[[Script]ConfigurationFile] folder =
[[Script]ConfigurationFile] filename =
LCM: [ End Test ] [[Script]ConfigurationFile] in 0.4850 seconds.
この特定の問題をオンラインで検索するのに 1 日を費やしましたが、変数、パラメーター、および構成データのすべての例はすべて、「ConfigurationFolder」で既に作業しているファイルおよびレジストリ リソースまたはその他の非スクリプト リソースを使用しています" 私のスクリプトでブロックします。私が立ち往生しているのは、「ConfigurationFile」のようなスクリプト リソース内から構成データを参照する方法です。
私は完全な空白を描いたので、どんな助けでも大歓迎です。他のすべてが失敗した場合、サーバーごとに個別の「構成」スクリプトを作成し、値をハードコーディングする必要があるかもしれませんが、これは可能な限りやりたくありません。
乾杯、
マイク