Installer ou désinstaller une fonctionnalité Windows
Description
Cet exemple montre comment utiliser la WindowsFeature
ressource pour vous assurer qu’une fonctionnalité Windows est :
- Installé ou désinstallé
- Qu’il soit installé avec ses sous-catégories
- Qu’il soit installé en tant que compte spécifique
Toutes les valeurs de la ressource sont fournies par l’utilisateur, et non codées en dur. Les paramètres sont mappés aux propriétés de la ressource, ce qui modifie son comportement.
Nom
Si vous ne spécifiez pas le paramètre Name , la propriété Name de la ressource est définie Telnet-Client
sur . Cette fonctionnalité Windows installe ou désinstalle la ressource.
Ensure
Si vous ne spécifiez pas le paramètre Ensure , la propriété Ensure de la ressource est définie Present
et la ressource installe la fonctionnalité Windows si elle n’est pas déjà installée.
Si vous spécifiez Vérifier en tant que Absent
, la ressource désinstalle la fonctionnalité Windows si elle est installée.
IncludeAllSubFeature
Si vous ne spécifiez pas le paramètre IncludeAllSubFeature , la propriété IncludeAllSubFeature de la ressource est définie $false
et la ressource n’installe pas les sous-entités de la fonctionnalité Windows si Ensure est défini Present
sur .
Si Ensure est défini Absent
sur , la ressource désinstalle toujours les sous-entités pour toute fonctionnalité Windows qu’elle supprime.
Informations d'identification
Si vous ne spécifiez pas le paramètre Credential , la ressource ne définit pas la propriété Credential et installe ou désinstalle la fonctionnalité Windows sous le compte par défaut.
LogPath
Si vous ne spécifiez pas le paramètre LogPath , la ressource ne définit pas la propriété LogPath et n’écrit pas les journaux d’activité pour l’installation ou la désinstallation de la fonctionnalité Windows dans un fichier.
Avec Invoke-DscResource
Ce script montre comment utiliser la WindowsFeature
ressource avec l’applet Invoke-DscResource
de commande pour vous assurer qu’une fonctionnalité Windows est installée ou installée avec les paramètres fournis par l’utilisateur.
Par défaut, elle garantit que la Telnet-Client
fonctionnalité Windows est installée sans sous-fonctionnalités et n’écrit pas les journaux d’installation dans un fichier.
[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
}
}
Avec une configuration
Cet extrait de code montre comment définir un Configuration
WindowsFeature
bloc de ressources pour vous assurer qu’une fonctionnalité Windows est installée ou installée avec les paramètres fournis par l’utilisateur.
Par défaut, elle garantit que la Telnet-Client
fonctionnalité Windows est installée sans sous-fonctionnalités et n’écrit pas les journaux d’installation dans un fichier.
Important
Il existe une limitation dans la configuration de l’ordinateur qui empêche une ressource DSC d’utiliser des applets de commande PowerShell non incluses dans PowerShell lui-même ou dans un module sur le PowerShell Gallery. Cet exemple est fourni à des fins de démonstration, mais étant donné que la ressource DSC utilise des applets de commande du module DISM, qui est fournie comme l’un des modules Windows, elle ne fonctionnera pas dans la configuration de l’ordinateur.
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
}
}
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour