Bron van het DSC-ScriptDSC Script Resource

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

De Script resource in Windows PowerShell Desired State Configuration (DSC) biedt een mechanisme voor het uitvoeren van Windows PowerShell-scriptblokken op de doelknooppunten.The Script resource in Windows PowerShell Desired State Configuration (DSC) provides a mechanism to run Windows PowerShell script blocks on target nodes. De Script resource heeft GetScript, SetScript, en TestScript eigenschappen.The Script resource has GetScript, SetScript, and TestScript properties. Deze eigenschappen moeten worden ingesteld op scriptblokken dat wordt uitgevoerd op elk doelknooppunt.These properties should be set to script blocks that will run on each target node.

De GetScript scriptblok als resultaat moet een hashtabel die vertegenwoordigt de status van het huidige knooppunt.The GetScript script block should return a hashtable representing the state of the current node. De hash-tabel mag slechts één sleutelveld bevatten Result en de waarde moet van het type String.The hashtable must only contain one key Result and the value must be of type String. Het is niet vereist voor het resultaat opgeleverd.It is not required to return anything. DSC geen reactie met de uitvoer van deze scriptblok.DSC doesn't do anything with the output of this script block.

De TestScript scriptblok moet bepalen of het huidige knooppunt moet worden gewijzigd.The TestScript script block should determine if the current node needs to be modified. Er moet worden geretourneerd $true als het knooppunt bijgewerkt is.It should return $true if the node is up-to-date. Er moet worden geretourneerd $false als de configuratie van het knooppunt verouderd is en moet worden bijgewerkt door de SetScript scriptblok.It should return $false if the node's configuration is out-of-date and should be updated by the SetScript script block. De TestScript scriptblok wordt aangeroepen door DSC.The TestScript script block is called by DSC.

De SetScript scriptblok het knooppunt moet wijzigen.The SetScript script block should modify the node. Deze wordt aangeroepen door DSC als de TestScript blokkeren return $false.It is called by DSC if the TestScript block return $false.

Als u wilt gebruiken van variabelen uit het configuratiescript in de GetScript, TestScript, of SetScript scriptblokken, gebruikt u de $using: bereik (Zie hieronder voor een voorbeeld).If you need to use variables from your configuration script in the GetScript, TestScript, or SetScript script blocks, use the $using: scope (see below for an example).

SyntaxisSyntax

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

EigenschappenProperties

EigenschapProperty BeschrijvingDescription
GetScriptGetScript Biedt een blok van Windows PowerShell-script dat wordt uitgevoerd wanneer u aanroept de Get-DscConfiguration cmdlet.Provides a block of Windows PowerShell script that runs when you invoke the Get-DscConfiguration cmdlet. Dit blok moet een hashtabel retourneren.This block must return a hashtable. De hash-tabel mag slechts één sleutelveld bevatten resultaat en de waarde moet van het type tekenreeks.The hashtable must only contain one key Result and the value must be of type String.
SetScriptSetScript Biedt een blok van Windows PowerShell-script.Provides a block of Windows PowerShell script. Wanneer u aanroept de Start DscConfiguration -cmdlet de TestScript blok als eerste wordt gestart.When you invoke the Start-DscConfiguration cmdlet, the TestScript block runs first. Als de TestScript blokkeren retourneert $false, wordt de SetScript blok wordt uitgevoerd.If the TestScript block returns $false, the SetScript block will run. Als de TestScript blokkeren retourneert $true, wordt de SetScript blok wordt niet uitgevoerd.If the TestScript block returns $true, the SetScript block will not run.
TestScriptTestScript Biedt een blok van Windows PowerShell-script.Provides a block of Windows PowerShell script. Wanneer u aanroept de Start DscConfiguration cmdlet dit blok wordt uitgevoerd.When you invoke the Start-DscConfiguration cmdlet, this block runs. Als het resultaat $false, het blok SetScript wordt uitgevoerd.If it returns $false, the SetScript block will run. Als het resultaat $true, SetScript blok wordt niet uitgevoerd.If it returns $true, the SetScript block will not run. De TestScript blok wordt ook uitgevoerd wanneer u aanroept de Test DscConfiguration cmdlet.The TestScript block also runs when you invoke the Test-DscConfiguration cmdlet. Echter, in dit geval de SetScript blok wordt niet uitgevoerd, ongeacht welke het TestScript waarde blokkeren retourneert.However, in this case, the SetScript block will not run, no matter what value the TestScript block returns. De TestScript blok moet True worden geretourneerd als de configuratie van de werkelijke overeenkomt met de huidige configuratie van de gewenste status en False als komt niet overeen met.The TestScript block must return True if the actual configuration matches the current desired state configuration, and False if it does not match. (De huidige configuratie van de gewenste status is de laatste configuratie van kracht op het knooppunt dat van DSC gebruikmaakt.)(The current desired state configuration is the last configuration enacted on the node that is using DSC.)
referentieCredential Hiermee geeft u de referenties gebruiken om dit script uit te voeren als de referenties zijn vereist.Indicates the credentials to use for running this script, if credentials are required.
dependsOnDependsOn Hiermee wordt aangegeven dat de configuratie van een andere resource uitvoeren moet voordat deze bron is geconfigureerd.Indicates that the configuration of another resource must run before this resource is configured. Bijvoorbeeld, als de ID van de resourceconfiguratie scriptblok die u wilt uitvoeren eerst is ResourceName en het type ResourceType, de syntaxis voor het gebruik van deze eigenschap is DependsOn = "[ResourceType]ResourceName".For example, if the ID of the resource configuration script block that you want to run first is ResourceName and its type is ResourceType, the syntax for using this property is DependsOn = "[ResourceType]ResourceName".

Voorbeeld 1Example 1

Configuration ScriptTest
{
    Import-DscResource –ModuleName 'PSDesiredStateConfiguration'

    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) } }          
    }
}

Voorbeeld 2Example 2

$version = Get-Content 'version.txt'

Configuration ScriptTest
{
    Import-DscResource –ModuleName 'PSDesiredStateConfiguration'

    Script UpdateConfigurationVersion
    {
        GetScript = { 
            $currentVersion = Get-Content (Join-Path -Path $env:SYSTEMDRIVE -ChildPath 'version.txt')
            return @{ 'Result' = "$currentVersion" }
        }          
        TestScript = { 
            $state = $GetScript
            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')
        }
    }
}

Deze bron is de versie van de configuratie naar een tekstbestand schrijven.This resource is writing the configuration's version to a text file. Deze versie beschikbaar is op de clientcomputer, maar bevindt zich niet op een van de knooppunten, dus het moet worden doorgegeven aan elk van de Script scriptblokken van de resource met de PowerShell using bereik.This version is available on the client computer, but isn't on any of the nodes, so it has to be passed to each of the Script resource's script blocks with PowerShell's using scope. Wanneer het genereren van het knooppunt MOF-bestand, de waarde van de $version variabele wordt gelezen uit een tekstbestand op de clientcomputer.When generating the node's MOF file, the value of the $version variable is read from a text file on the client computer. DSC-vervangt de $using:version variabelen in elk script blokkeren met de waarde van de $version variabele.DSC replaces the $using:version variables in each script block with the value of the $version variable.