Instalar o desinstalar una característica de Windows
Descripción
En este ejemplo se muestra cómo puede usar el WindowsFeature
recurso para asegurarse de que una característica de Windows es:
- Instalado o desinstalado
- Si se instala con sus subfeatures
- Si se instala como una cuenta específica
Todos los valores del recurso son proporcionados por el usuario, no codificados de forma rígida. Los parámetros se asignan a las propiedades del recurso, cambiando su comportamiento.
Nombre
Si no especifica el parámetro Name , la propiedad Name del recurso se establece en Telnet-Client
. Esta característica de Windows que instala o desinstala el recurso.
Ensure
Si no especifica el parámetro Ensure , la propiedad Ensure del recurso se establece Present
en y el recurso instala la característica de Windows si aún no está instalada.
Si especifica Asegurar como Absent
, el recurso desinstala la característica de Windows si está instalada.
IncludeAllSubFeature
Si no especifica el parámetro IncludeAllSubFeature , la propiedad IncludeAllSubFeature del recurso se establece $false
en y el recurso no instala las subfeatures de la característica de Windows si Asegúrese está establecido Present
en .
Si Asegúrese está establecido Absent
en , el recurso siempre desinstala las subfeatures de cualquier característica de Windows que quite.
Credential:
Si no especifica el parámetro Credential , el recurso no establece la propiedad Credential e instala o desinstala la característica de Windows en la cuenta predeterminada.
LogPath
Si no especifica el parámetro LogPath , el recurso no establece la propiedad LogPath y no escribe los registros para instalar o desinstalar la característica de Windows en un archivo.
Con Invoke-DscResource
Este script muestra cómo puede usar el recurso con el cmdlet para asegurarse de que una característica de Windows está instalada o instalada con la configuración proporcionada por el WindowsFeature
Invoke-DscResource
usuario.
De forma predeterminada, garantiza que la Telnet-Client
característica de Windows está instalada sin subfeatures y no escribe los registros de instalación en un archivo.
[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
}
}
Con una configuración
Este fragmento de código muestra cómo definir un Configuration
con un WindowsFeature
bloque de recursos para asegurarse de que una característica de Windows está instalada o instalada con la configuración proporcionada por el usuario.
De forma predeterminada, garantiza que la Telnet-Client
característica de Windows está instalada sin subfeatures y no escribe los registros de instalación en un archivo.
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 en sí 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 incluye como uno de los módulos de Windows, no funcionará en la configuración de la máquina.
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
}
}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de