Sdílet prostřednictvím


Instalace nebo odinstalace funkce Systému Windows

Description

Tento příklad ukazuje, jak můžete prostředek použít WindowsFeature k zajištění, že je funkce Systému Windows:

  • Nainstalováno nebo odinstalováno
  • Jestli je nainstalovaná s jeho dílčími funkcemi
  • Jestli je nainstalovaný jako konkrétní účet

Všechny hodnoty prostředku jsou zadané uživatelem, nikoli pevně zakódované. Parametry se mapuje na vlastnosti prostředku a mění jeho chování.

Name

Pokud parametr Name nezadáte, vlastnost Name prostředku je nastavena na Telnet-Clienthodnotu . Tato funkce windows prostředek nainstaluje nebo odinstaluje.

Zajištění

Pokud nezadáte parametr Ensure , vlastnost Resource's Ensure je nastavená na Present a prostředek nainstaluje funkci Windows, pokud ještě není nainstalovaná.

Pokud zadáte Možnost Zajistit jako Absent, prostředek odinstaluje funkci Windows, pokud je nainstalovaná.

IncludeAllSubFeature

Pokud nezadáte parametr IncludeAllSubFeature , vlastnost IncludeAllSubFeature prostředku je nastavena na $false a prostředek nenainstaluje dílčífeatury funkce Systému Windows, pokud je nastavená hodnota PresentEnsure .

Pokud je nastavená hodnota Absent, prostředek vždy odinstaluje dílčí funkce pro všechny funkce Windows, které odebere.

Přihlašovací údaj

Pokud nezadáte parametr Credential , prostředek nenastaví vlastnost Credential a nainstaluje nebo odinstaluje funkci Windows ve výchozím účtu.

LogPath

Pokud nezadáte parametr LogPath , prostředek nenastaví vlastnost LogPath a nezapíše protokoly pro instalaci nebo odinstalaci funkce Windows do souboru.

S Invoke-DscResource

Tento skript ukazuje, jak můžete použít WindowsFeature prostředek s rutinou Invoke-DscResource k zajištění instalace nebo instalace funkce Systému Windows s uživatelským nastavením.

Ve výchozím nastavení zajišťuje Telnet-Client instalaci funkce Systému Windows bez dílčích funkcí a nezapisuje do souboru protokoly instalace.

[CmdletBinding()]
param(
    [System.String]
    $Name = 'Telnet-Client',

    [ValidateSet('Present', 'Absent')]
    [System.String]
    $Ensure = 'Present',

    [System.Boolean]
    $IncludeAllSubFeature = $false,

    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential,

    [ValidateNotNullOrEmpty()]
    [System.String]
    $LogPath
)

begin {
    $SharedParameters = @{
        Name       = 'WindowsFeature'
        ModuleName = 'PSDscResource'
        Properties = @{
            Name                 = $Name
            Ensure               = $Ensure
            IncludeAllSubFeature = $IncludeAllSubFeature
        }
    }

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

process {
    if ($PSBoundParameters.ContainsKey('Credential')) {
        $SharedParameters.Properties.Credential = $Credential
        $NonGetProperties += 'Credential'
    }

    if ($PSBoundParameters.ContainsKey('LogPath')) {
        $SharedParameters.Properties.LogPath = $LogPath
        $NonGetProperties += 'LogPath'
    }

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

S konfigurací

Tento fragment kódu ukazuje, jak můžete definovat Configuration blok WindowsFeature prostředků, abyste měli jistotu, že je funkce Systému Windows nainstalovaná nebo nainstalovaná s uživatelským nastavením.

Ve výchozím nastavení zajišťuje Telnet-Client instalaci funkce Systému Windows bez dílčích funkcí a nezapisuje do souboru protokoly instalace.

Důležité

Konfigurace počítače omezuje, že prostředek DSC nebude používat žádné rutiny PowerShellu, které nejsou součástí samotného PowerShellu nebo modulu v Galerie prostředí PowerShell. Tento příklad je k dispozici pro demonstrující účely, ale protože prostředek DSC používá rutiny z modulu DISM, který se dodává jako jeden z modulů Windows, nebude fungovat v konfiguraci počítače.

Configuration Example {
    param(
        [System.String]
        $Name = 'Telnet-Client',

        [ValidateSet('Present', 'Absent')]
        [System.String]
        $Ensure = 'Present',

        [System.Boolean]
        $IncludeAllSubFeature = $false,

        [System.Management.Automation.PSCredential]
        [System.Management.Automation.Credential()]
        $Credential,

        [ValidateNotNullOrEmpty()]
        [System.String]
        $LogPath
    )

    Import-DscResource -ModuleName 'PSDscResources'

    $HasCredential = $null -ne $Credential
    $HasLogPath = ![string]::IsNullOrEmpty($LogPath)

    Node Localhost {
        if ($HasCredential -and $HasLogPath) {
            WindowsFeature ExampleWindowsFeature {
                Name                 = $Name
                Ensure               = $Ensure
                IncludeAllSubFeature = $IncludeAllSubFeature
                Credential           = $Credential
                LogPath              = $LogPath
            }
        } elseif ($HasCredential) {
            WindowsFeature ExampleWindowsFeature {
                Name                 = $Name
                Ensure               = $Ensure
                IncludeAllSubFeature = $IncludeAllSubFeature
                Credential           = $Credential
            }
        } elseif ($HasLogPath) {
            WindowsFeature ExampleWindowsFeature {
                Name                 = $Name
                Ensure               = $Ensure
                IncludeAllSubFeature = $IncludeAllSubFeature
                LogPath              = $LogPath
            }
        } else {
            WindowsFeature ExampleWindowsFeature {
                Name                 = $Name
                Ensure               = $Ensure
                IncludeAllSubFeature = $IncludeAllSubFeature
            }
        }
    }
}