사내 응용 프로그램을 구성하기 위해 작동하는 PowerShell Desired State Configuration 스크립트를 가져 오는 데 많은 어려움을 겪고 있습니다. 문제의 근본 원인은 내 구성 데이터를 ScriptResource로 전달할 수 없다는 것입니다 (최소한 내가하려는 방식이 아님).PowerShell DSC - 구성 매개 변수를 ScriptResources에 전달하는 방법?
내 스크립트 파일에 일부 설정을 우리의 사내 응용 프로그램에 대한 config 폴더를 만든 다음 쓰기로되어있다 : 참고로
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;
을 내가 적용 할 때 이 구성은 행복하게 폴더를 만들지 만 설정 파일로는 아무 것도하지 못합니다. 아래 출력을 보면 $ Node 변수가 ConfigurationFile/TestScript의 범위 내에서 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.
나는이 특정 문제에 대한 온라인 검색 전체 하루를 타 봤지만 내가했습니다 변수, 매개 변수 및 구성 데이터를 모두 사용하여 파일 및 레지스트리 자원 또는 기타 스크립트 자원의 모든 예제, 내 스크립트의 "ConfigurationFolder"블록에서 이미 작업하고 있습니다. 내가 붙어있는 것은 내 "ConfigurationFile"과 같은 스크립트 리소스 내에서 구성 데이터를 참조하는 방법입니다.
나는 모든 도움을 주시면 감사하겠습니다. 다른 모든 것이 실패 할 경우 서버마다 별도의 "구성"스크립트를 만들고 하드 코드로 값을 설정해야 할 수도 있습니다. 가능한 경우 수행하고 싶지 않습니다.
건배,
마이크
ConfigurationData 만 MOF 파일은 컴파일 시간에 존재
사용, 스크립트 DSC 리소스에 전달하려는 경우
, 당신은 중괄호를 사용할 수 있습니다, 당신은 너무'{ '가된다 (을 두 배로 필요 '{{'와'}'는'}}'이됩니다. – BartekB