Megosztás a következőn keresztül:


DSC-szkript erőforrása

A következőkre vonatkozik: Windows PowerShell 4.0, Windows PowerShell 5.x

A Windows PowerShell Desired State Configuration (DSC) Script erőforrása lehetővé teszi a Windows PowerShell-szkriptblokkok célcsomópontokon való futtatását. A Script erőforrás GetScriptSetScriptés TestScript olyan tulajdonságokat használ, amelyek szkriptblokkokat tartalmaznak a megfelelő DSC-állapotműveletek végrehajtásához.

Borravaló

Ahol lehetséges, ajánlott egy definiált DSC-erőforrást használni ahelyett, hogy ezt használná. Az Script erőforrás hátrányai megnehezítik a tesztelést, a karbantartást és az előrejelzést.

A többi DSC-erőforrástól eltérően egy Script erőforrás minden tulajdonsága kulcstulajdonság, és az erőforrás Get metódusa csak egyetlen sztringet tud visszaadni az aktuális állapothoz. Nincs garancia arra, hogy ez az erőforrás idempotens módon van implementálva, vagy hogy bármely rendszeren a várt módon fog működni, mert egyéni kódot használ. Nem tesztelhető anélkül, hogy meghívták volna egy célrendszeren.

Az Script erőforrás használata előtt gondolja át, hogy ehelyett-e erőforrást létrehozni. A jól definiált DSC-erőforrások használata olvashatóbbá és karbantarthatóbbá teszi a konfigurációkat.

Jegyzet

A DSC-erőforrás dokumentációja a PowerShell 7.2-es verzió előtti verzióját tartalmazza. A PSDscResources modul a Microsoft által hivatalosan támogatott új és frissített DSC-erőforrásokat tartalmazza. A PSDscResources modul a PowerShell-gyűjteményből érhető el.

További információ és frissített dokumentáció: PSDscResources referenciadokumentáció.

Szintaxis

Script [string] #ResourceName
{
    GetScript = [string]
    SetScript = [string]
    TestScript = [string]
    [ Credential = [PSCredential] ]
    [ DependsOn = [string[]] ]
    [ PsDscRunAsCredential = [PSCredential] ]
}

Jegyzet

GetScript TestScriptés SetScript blokkok sztringekként vannak tárolva.

Kellékek

Ingatlan Leírás
GetScript Egy szkriptblokk, amely a csomópont aktuális állapotát adja vissza.
SetScript Szkriptblokk, amelyet a DSC használ a megfelelőség kikényszerítésére, ha a csomópont nincs a kívánt állapotban.
TestScript Egy szkriptblokk, amely meghatározza, hogy a csomópont a kívánt állapotban van-e.
Megbízólevél A szkript futtatásához használandó hitelesítő adatokat jelzi, ha hitelesítő adatokra van szükség.

Gyakori tulajdonságok

Ingatlan Leírás
DependsOn Azt jelzi, hogy egy másik erőforrás konfigurációjának futnia kell az erőforrás konfigurálása előtt.
PsDscRunAsCredential Beállítja a hitelesítő adatokat a teljes erőforrás futtatásához.

Jegyzet

A PsDscRunAsCredential common tulajdonság hozzáadva lett a WMF 5.0-s verziójához, hogy bármilyen DSC-erőforrást futtathasson más hitelesítő adatokkal összefüggésben. További információ: Hitelesítő adatok használata DSC-erőforrásokkal.

További információk

GetScript

A DSC nem használja a GetScript A Get-DscConfiguration parancsmag GetScript hajtja végre a csomópont aktuális állapotának lekéréséhez. A visszatérési érték nem szükséges a GetScript Ha visszaadott értéket ad meg, annak olyan Eredmény kulcsot tartalmazó kivonatolónak kell lennie, amelynek értéke sztring.

TestScript

A DSC TestScript hajtja végre annak megállapításához, hogy SetScript kell-e futtatni. Ha TestScript$falsead vissza, a DSC végrehajtja SetScript, hogy a csomópont visszakerüljön a kívánt állapotba. Logikai értéket kell visszaadnia. A $true eredménye azt jelzi, hogy a csomópont megfelelő, és SetScript nem szabad végrehajtani.

A Test-DscConfiguration parancsmag végrehajtja a TestScript, hogy lekérje a csomópontok megfelelőségét a Script erőforrásoknak. Ebben az esetben azonban SetScript nem fut, függetlenül attól, hogy TestScript blokk mit ad vissza.

Jegyzet

A TestScript minden kimenete a visszatérési érték részét képezi. A PowerShell nem nullaként értelmezi a nem tömörített kimenetet, ami azt jelenti, hogy a TestScript a csomópont állapotától függetlenül $true ad vissza. Ez kiszámíthatatlan eredményeket, hamis pozitív eredményeket eredményez, és nehézséget okoz a hibaelhárítás során.

SetScript

SetScript módosítja a csomópontot a kívánt állapot kényszerítéséhez. A DSC SetScript hív meg, ha a TestScript szkriptblokk $falsead vissza. A SetScript nem lehet visszatérési érték.

Példák

1. példa: Példaszöveg írása szkripterőforrás használatával

Ez a példa az egyes csomópontokon található C:\TempFolder\TestFile.txt meglétét teszteli. Ha nem létezik, a SetScripthasználatával hozza létre. A GetScript a fájl tartalmát adja vissza, és a visszatérési érték nem használatos.

Configuration ScriptTest
{
    Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

    Node localhost
    {
        Script ScriptExample
        {
            SetScript = {
                $sw = New-Object System.IO.StreamWriter("C:\TempFolder\TestFile.txt")
                $sw.WriteLine("Some sample string")
                $sw.Close()
            }
            TestScript = { Test-Path "C:\TempFolder\TestFile.txt" }
            GetScript = { @{ Result = (Get-Content C:\TempFolder\TestFile.txt) } }
        }
    }
}

2. példa: Verzióadatok összehasonlítása szkripterőforrás használatával

Ez a példa lekéri a megfelelő verzióinformációkat a szerzői számítógépen található szövegfájlból, és a $version változóban tárolja. A csomópont MOF-fájljának létrehozásakor a DSC az egyes szkriptblokkok $using:version változóit a $version változó értékére cseréli. A végrehajtás során a megfelelő verzió egy szövegfájlban lesz tárolva minden csomóponton, és összehasonlítja és frissíti a későbbi végrehajtásokat.

$version = Get-Content 'version.txt'

Configuration ScriptTest
{
    Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

    Node localhost
    {
        Script UpdateConfigurationVersion
        {
            GetScript = {
                $currentVersion = Get-Content (Join-Path -Path $env:SYSTEMDRIVE -ChildPath 'version.txt')
                return @{ 'Result' = "$currentVersion" }
            }
            TestScript = {
                # Create and invoke a scriptblock using the $GetScript automatic variable, which contains a string representation of the GetScript.
                $state = [scriptblock]::Create($GetScript).Invoke()

                if( $state.Result -eq $using:version )
                {
                    Write-Verbose -Message ('{0} -eq {1}' -f $state.Result,$using:version)
                    return $true
                }
                Write-Verbose -Message ('Version up-to-date: {0}' -f $using:version)
                return $false
            }
            SetScript = {
                $using:version | Set-Content -Path (Join-Path -Path $env:SYSTEMDRIVE -ChildPath 'version.txt')
            }
        }
    }
}

3. példa: Paraméterek használata szkripterőforrásban

Ez a példa a szkripterőforráson belülről fér hozzá a paraméterekhez a using hatókör használatával. ConfigurationData hasonló módon érhető el. A 2. példához hasonlóan az implementáció elvárja, hogy a verzió a célcsomóponton lévő helyi fájlban legyen tárolva. A helyi elérési út és a verzió is konfigurálható, és elválasztja a kódot a konfigurációs adatoktól.

Configuration ScriptTest
{
    param
    (
        [Version]
        $Version,

        [string]
        $FilePath
    )

    Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

    Node localhost
    {
        Script UpdateConfigurationVersion
        {
            GetScript = {
                $currentVersion = Get-Content -Path $using:FilePath
                return @{ 'Result' = "$currentVersion" }
            }
            TestScript = {
                # Create and invoke a scriptblock using the $GetScript automatic variable,
                # which contains a string representation of the GetScript.
                $state = [scriptblock]::Create($GetScript).Invoke()

                if( $state['Result'] -eq $using:Version )
                {
                    Write-Verbose -Message ('{0} -eq {1}' -f $state['Result'],$using:version)
                    return $true
                }

                Write-Verbose -Message ('Version up-to-date: {0}' -f $using:version)
                return $false
            }
            SetScript = {
                Set-Content -Path $using:FilePath -Value $using:Version
            }
        }
    }
}

Az eredményül kapott MOF-fájl tartalmazza az using hatókörön keresztül elért változókat és értékeiket. Ezeket minden szkriptblokkba injektáljuk, amely a változókat használja. A teszt- és beállításszkripteket a rendszer eltávolítja a rövidség kedvéért:

instance of MSFT_ScriptResource as $MSFT_ScriptResource1ref
{
 GetScript = "$FilePath ='C:\\Config.ini'\n\n $currentVersion = Get-Content -Path $FilePath\n return @{ 'Result' = \"$currentVersion\" }\n";
 TestScript = ...;
 SetScript = ...;
};

Ismert korlátozások

  • A szkripterőforráson belül átadott hitelesítő adatok nem mindig megbízhatóak lekéréses vagy leküldéses kiszolgálómodell használatakor. Ebben az esetben a szkripterőforrás helyett használjon teljes erőforrást.