このようにDSC構成を1つのファイルにネストすると、正常に機能します。
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose
構成を2つの別々のファイルに分割したい。一方が他方をドットソース化して構成を含めます。
Secondary.ps1:
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Primary.ps1:
. .\Secondary.ps1
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose
何らかの理由で、これはセカンダリ構成に渡されたパラメーターを取得しないため、エラーが発生します。
Could not find mandatory property Name. Add this property and try again.
+ CategoryInfo : ObjectNotFound: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 6
+ PSComputerName : localhost
同じファイル内では機能するが、ドットソーシングでは機能しないことは非常に奇妙に思われます。ドットソーシングは基本的に同じファイルにコードを含めることと同じだと思いました。ここで何が欠けていますか?
同じファイルで定義されていない別の構成から構成を参照する場合は、複合リソースパターンを使用する必要があります。
モジュールでは、DscResourcesフォルダーを作成します。そのフォルダーに、複合構成を保持するモジュールを作成します。複合構成は、拡張子が.schema.psm1のファイルで定義されます。ファイルには、ルートモジュールとしてschema.psm1ファイルを指すモジュールマニフェストが必要です。
詳細と例については、PowerShellチームのブログをチェックしてください http://blogs.msdn.com/b/powershell/archive/2014/02/25/reusing-existing-configuration-scripts-in- powershell-desired-state-configuration.aspx
パラメータのスプラッティングが役立ちます-修正後のPrimary.ps1
は動作するはずです:
. .\Secondary.ps1
Configuration MyConfiguration {
Node localhost {
$params = @{ SomeParameter = "TestEnvVar" }
Secondary TheSecondary @params
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose
この回答ごとに 、次の形式のパラメーターを除く:
Node localhost {
Secondary TheSecondary -SomeParameter "TestEnvVar"
}
情報提供のみ。