1

DSC の専門家にとって、これは非常に単純な質問のように思えるかもしれませんが、Web 上でこれに関するリソースや、私が見たエラー メッセージに関するリソースを見つけることができませんでした。DSC に関する情報を掘り下げるのは非常に難しいように思われるので、おそらくここから始めることができます。

スケジュールされたタスクをインストールするための Powershell DSC 構成を構築しようとしています。Steve Murawski のStackExchange リソースの Github ページでサンプル リソースを見つけ、「StackExchangeResources」ツリーを DSC リポジトリにコピーしました。

StackExchangeModule をインポートし、ScheduledTask リソースを使用して非常に単純な構成を作成しようとしました。

Import-Module StackExchangeResources

Configuration TempCleaner
{
    param($NodeName)

    Node $NodeName
    {
        $filePath = "C:\Tasks\TempCleaner.ps1";

        ScheduledTask
        {
            Name = "Clear Temporary Files"
            FilePath = $filePath
            Daily = $true
            FilePath = ""
            Hours = 4
            Minutes = 0
        }
    }
}

ただし、 を実行TempCleaner -Node TestNodeしても、実際には何もしません。MOF ファイルは書き込まれず、エラーはスローされません。

さて、私が見た多くの例では、リソースの呼び出しに名前を付けることが含まれています。次のようなものです。

File TempCleaner
{
    DestinationPath = $filePath
    Contents = $(cat $tempCleanerScript | out-string)
    Checksum = "SHA-512"
}

でも、そんな名前をつけようとすると、

ScheduledTask CleanerTask
{
    Name = "Clear Temporary Files"
    FilePath = $filePath
    Daily = $true
    FilePath = ""
    Hours = 4
    Minutes = 0
}

例外がスローされます。

ScheduledTask : プロパティ 'TaskName' が 'CleanerTask' に等しい MSFT_ScheduledTask オブジェクトが見つかりません。プロパティの値を確認して、再試行してください。C:\Users\Steve\Documents\DevOps\DSC\TempCleaner.ps1:13 文字:9 + ScheduledTask CleanerTask + ~~~~~~~~~~~~~~~~~~~~~~ ~ + CategoryInfo : ObjectNotFound: (CleanerTask:String) [Get-ScheduledTask] , CimJobException + FullyQualifiedErrorId : CmdletizationQuery_NotFound_TaskName,Get-ScheduledTask

上記のように、スケジュールされたタスク リソースをファイル リソースと組み合わせて使用​​すると、ファイル リソースは結果の MOF ファイルに書き込まれますが、その中に他のディレクティブは表示されません。

私がここで見逃しているものがあるに違いありません。おそらく有効にできるある種の冗長モードはありますか?文書化されていないその他のログ オプションはありますか? それはとても役に立ちます。

4

2 に答える 2

1

DSC の概要をお探しの場合は、次から始めることをお勧めします。

まだコメントを追加できないため、返信を編集しています。私たちのリソースに重複したキーがあると思います.

Import-Module StackExchangeResources

Configuration TempCleaner
{
    param($NodeName)

    Node $NodeName
    {
        $filePath = "C:\Tasks\TempCleaner.ps1";

        ScheduledTask
        {
            Name = "Clear Temporary Files"
            FilePath = $filePath
            Daily = $true
            #FilePath = "" - Need unique keys. Also, FilePath is only a string not string[]
            Hours = 4
            Minutes = 0
        }
    }
}
于 2014-04-20T08:40:40.577 に答える