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-Client
hodnotu . 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 Present
Ensure .
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
}
}
}
}