Dela via


Aktivera den angivna valfria Windows-funktionen och utdataloggarna till den angivna sökvägen

Description

Det här exemplet visar hur du kan använda resursen WindowsOptionalFeature med värden från användaren för att säkerställa att en valfri Windows-funktion är aktiverad.

Du måste ange namnet på den valfria Windows-funktionen för att aktivera med parametern FeatureName , som anger egenskapen Namn för resursen.

Du måste ange sökvägen till en loggfil med LogPath-parametern , som anger LogPath-egenskapen för resursen.

Med Se till inställt på Present och egenskapen Namn inställt på värdet från parametern FeatureName aktiverar resursen den angivna valfria Windows-funktionen om den är inaktiverad.

Med LogPath inställt på det användardefinierade värdet från LogPath-parametern skriver resursen loggarna för att aktivera funktionen till filen i stället för %WINDIR%\Logs\Dism\dism.log.

Med Invoke-DscResource

Det här skriptet visar hur du kan använda resursen WindowsOptionalFeature med cmdleten Invoke-DscResource för att säkerställa att en användardefinerad funktion är aktiverad.

[CmdletBinding()]
param(
    [Parameter (Mandatory = $true)]
    [String]
    $FeatureName,

    [Parameter(Mandatory = $true)]
    [String]
    $LogPath
)

begin {
    $SharedParameters = @{
        Name       = 'WindowsOptionalFeature'
        ModuleName = 'PSDscResource'
        Properties = @{
            Name    = $FeatureName
            Ensure  = 'Present'
            LogPath = $LogPath
        }
    }

    $NonGetProperties = @(
        'Ensure'
        'LogPath'
    )
}

process {
    $TestResult = Invoke-DscResource -Method Test @SharedParameters

    if ($TestResult.InDesiredState) {
        $QueryParameters = $SharedParameters.Clone()

        foreach ($Property in $NonGetProperties) {
            $QueryParameters.Properties.Remove($Property)
        }

        Invoke-DscResource -Method Get @QueryParameters
    } else {
        Invoke-DscResource -Method Set @SharedParameters
    }
}

Med en konfiguration

Det här kodfragmentet visar hur du kan definiera en Configuration med ett WindowsOptionalFeature resursblock för att säkerställa att en användardefinierad funktion är aktiverad.

Viktigt

Det finns en begränsning i datorkonfigurationen som förhindrar att en DSC-resurs använder PowerShell-cmdletar som inte ingår i själva PowerShell eller i en modul på PowerShell-galleriet. Det här exemplet tillhandahålls i demonstrativt syfte, men eftersom DSC-resursen använder cmdletar från DISM-modulen, som levereras som en av Windows-modulerna, fungerar det inte i datorkonfigurationen.

Configuration Enable {
    param(
        [Parameter (Mandatory = $true)]
        [String]
        $FeatureName,

        [Parameter(Mandatory = $true)]
        [String]
        $LogPath
    )

    Import-DscResource -ModuleName 'PSDscResources'

    Node Localhost {
        WindowsOptionalFeature TelnetClient {
            Name    = $FeatureName
            Ensure  = 'Present'
            LogPath = $LogPath
        }
    }
}