Freigeben über


Aktivieren des angegebenen Windows-optionalen Features und Ausgabeprotokolle für den angegebenen Pfad

Beschreibung

In diesem Beispiel wird gezeigt, wie Sie die WindowsOptionalFeature Ressource mit vom Benutzer bereitgestellten Werten verwenden können, um sicherzustellen, dass ein optionales Windows-Feature aktiviert ist.

Sie müssen den Namen des optionalen Windows-Features angeben, das mit dem FeatureName-Parameter aktiviert wird, der die Name-Eigenschaft der Ressource festlegt.

Sie müssen den Pfad zu einer Protokolldatei mit dem LogPath-Parameter angeben, der die LogPath-Eigenschaft der Ressource festlegt.

Mit "Sicherstellen" und "Name"-Eigenschaft, die auf den vom Benutzer bereitgestellten Wert aus dem FeatureName-Parameter festgelegt Present ist, ermöglicht die Ressource das angegebene optionale Windows-Feature, wenn sie deaktiviert ist.

Wenn LogPath auf den vom Benutzer bereitgestellten Wert aus dem LogPath-Parameter festgelegt ist, schreibt die Ressource die Protokolle, um das Feature anstelle dieser %WINDIR%\Logs\Dism\dism.logDatei zu aktivieren.

Mit Invoke-DscResource

Dieses Skript zeigt, wie Sie die WindowsOptionalFeature Ressource mit dem Invoke-DscResource Cmdlet verwenden können, um sicherzustellen, dass ein vom Benutzer angegebenes Feature aktiviert ist.

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

Mit einer Konfiguration

In diesem Codeausschnitt wird gezeigt, wie Sie einen WindowsOptionalFeature Ressourcenblock definieren Configuration können, um sicherzustellen, dass ein vom Benutzer angegebenes Feature aktiviert ist.

Wichtig

Es gibt eine Einschränkung in der Computerkonfiguration, die verhindert, dass eine DSC-Ressource keine PowerShell-Cmdlets verwendet, die nicht in PowerShell selbst oder in einem Modul auf dem PowerShell-Katalog enthalten sind. Dieses Beispiel wird für demonstrative Zwecke bereitgestellt, aber da die DSC-Ressource Cmdlets aus dem DISM-Modul verwendet, das als eines der Windows-Module bereitgestellt wird, funktioniert sie nicht in der Computerkonfiguration.

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