3

次のような 2 つのブロックがあるとします。

Configuration TestConfig
{
    Node ('localhost') {
        File foo {
            DestinationPath = 'C:\foo.txt'
            Contents = 'Bar'
        }
        Script dothing {
            SetScript = {'Baz' | set-content C:\foo.txt}
            TestScript = {return $false}
            GetScript = {
                return @{
                    GetScript = ''
                    SetScript = ''
                    TestScript = ''
                    Credential = $Credential
                    Result = (Invoke-Expression -Command $TestScript)
                }
            }
            DependsOn = '[File]foo'
        }
    }
}

このようなことを行うテストを作成しましたが、ファイル リソースのテスト出力に関係なく、サービス リソースが実行されるようです。つまり、実際にファイルに対して何かを行った場合です。

VERBOSE: [MACHINENAME]: LCM:  [ Start  Set      ]
VERBOSE: [MACHINENAME]: LCM:  [ Start  Resource ]  [[File]foo]
VERBOSE: [MACHINENAME]: LCM:  [ Start  Test     ]  [[File]foo]
VERBOSE: [MACHINENAME]:                            [[File]foo] The destination object was found and no action is required.
VERBOSE: [MACHINENAME]: LCM:  [ End    Test     ]  [[File]foo]  in 0.0040 seconds.
VERBOSE: [MACHINENAME]: LCM:  [ Skip   Set      ]  [[File]foo]
VERBOSE: [MACHINENAME]: LCM:  [ End    Resource ]  [[File]foo]
VERBOSE: [MACHINENAME]: LCM:  [ Start  Resource ]  [[Script]dothing]
VERBOSE: [MACHINENAME]: LCM:  [ Start  Test     ]  [[Script]dothing]
VERBOSE: [MACHINENAME]: LCM:  [ End    Test     ]  [[Script]dothing]  in 0.0050 seconds.
VERBOSE: [MACHINENAME]: LCM:  [ Start  Set      ]  [[Script]dothing]
VERBOSE: [MACHINENAME]: LCM:  [ End    Set      ]  [[Script]dothing]  in 0.0060 seconds.
VERBOSE: [MACHINENAME]: LCM:  [ End    Resource ]  [[Script]dothing]
VERBOSE: [MACHINENAME]: LCM:  [ End    Set      ]
VERBOSE: [MACHINENAME]: LCM:  [ End    Set      ]    in  0.0390 seconds.

不自然な例はさておき、File リソースが実際に何かを実行した場合にのみ Script リソースを実行させるにはどうすればよいでしょうか?

ここでの私の使用例は、リモートの場所でファイルが変更されているかどうかを確認し、変更されている場合はローカル マシンにコピーしてから、サービスを再起動することです。ファイルが変更されていない場合は明らかにサービスを再起動したくありませんが、ファイルがハッシュを使用してテストされているため、それを行うための適切なべき等の方法がわかりません-サービスが必要です再起動ステップで同じファイル ハッシュ チェックを行います。

4

1 に答える 1