Share via


Habilitar la característica opcional y los registros de salida de Windows especificados en la ruta de acceso especificada

Descripción

En este ejemplo se muestra cómo puede usar el recurso con valores proporcionados por el WindowsOptionalFeature usuario para asegurarse de que está habilitada una característica opcional de Windows.

Debe especificar el nombre de la característica opcional de Windows para habilitar con el parámetro FeatureName , que establece la propiedad Name del recurso.

Debe especificar la ruta de acceso a un archivo de registro con el parámetro LogPath , que establece la propiedad LogPath del recurso.

Con Ensure establecido en Present y la propiedad Name establecida en el valor proporcionado por el usuario del parámetro FeatureName , el recurso habilita la característica opcional de Windows especificada si está deshabilitada.

Con LogPath establecido en el valor proporcionado por el usuario del parámetro LogPath , el recurso escribe los registros para habilitar la característica en ese archivo en lugar de %WINDIR%\Logs\Dism\dism.log.

Con Invoke-DscResource

Este script muestra cómo puede usar el WindowsOptionalFeature recurso con el cmdlet para asegurarse de que está habilitada una característica especificada por el Invoke-DscResource usuario.

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

Con una configuración

Este fragmento de código muestra cómo se puede definir un Configuration elemento con un WindowsOptionalFeature bloque de recursos para asegurarse de que está habilitada una característica especificada por el usuario.

Importante

Hay una limitación en la configuración de la máquina que impide que un recurso de DSC use los cmdlets de PowerShell que no se incluyan en PowerShell o en un módulo de la Galería de PowerShell. Este ejemplo se proporciona con fines demostrativos, pero dado que el recurso de DSC usa cmdlets del módulo DISM, que se distribuye como uno de los módulos de Windows, no funcionará en la configuración de la máquina.

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