2017-06-12 4 views
0

カスタムDSCリソースの作成に頼らずに、DSCリソース内にいくつかのロジックを持たせる最良の方法は何ですか?例は次のとおりです。 内蔵のDSCリソースFileにパラメータcontentを提供する必要があります。私はその値を返すためにConfiguration内にFunctionを置くことができず、ロジックをContentタグの中に入れることはできないようです。このような状況には、どのようなアプローチが可能でしょうか。DSCリソース内で複雑なロジックを使用することは可能ですか?

`` ` $ filePathに=参加-パス-Path "$($のENV:はProgramData)" -ChildPath "ドッキングウィンドウ\ CONFIG \ daemon.json"

 $filePath = Join-path -Path `"$($env:programdata)`" -ChildPath "docker\config\daemon.json`" 
    if (test-Path ($filePath)) 
    {) { $jsonConfig = get-content $filePath | convertfrom-json 
     $jsonConfig.graph = $graphLocation 
     $jsonConfig | convertto-json 
    } 
    else { @{ graphLocation = "$graphLocation"} | convertto-json 
    } 

` ``

答えて

1

ロジックをDSCジョブの一部として実行する必要がある場合は、カスタムDSCリソースを構築する必要があります。すべてのDSCコードがMOFファイルにコンパイルされ、MOFファイルは任意のPowerShellコードを実行できないことを忘れないでください。したがって、インライン関数はジョブ中に使用できません。

ただし、コンパイル段階で実行されるロジックを持つことができます。たとえば、DSCリソースプロパティに割り当てられるプロパティ値を計算します。

Configurationは最終的にパラメータとして名前とスクリプトブロックを取り、関数スコープで使用する前に定義する必要がありますが、ネストされた関数を定義することは有効です。

Configuration MyConfig { 

    function ComplexLogic() { 
    "It works!" 
    } 

    Import-DscResource -ModuleName 'PSDesiredStateConfiguration' 
    Node localhost { 
    Log Example { 
     Message = ComplexLogic 
    } 
    } 
} 

また、値を計算して、DSCの構成に引数として値を渡しプレーンPowerShellスクリプトを実行することができます。

関連する問題