Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0
Las configuraciones de DSC son scripts de PowerShell que definen un tipo especial de función. Para definir una configuración, use la palabra clave Configuración de PowerShell.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Guarde el script como un archivo .ps1.
Sintaxis de configuración
Un script de configuración consta de las siguientes partes:
- El bloque Configuración . Este es el bloque de script más externo. Para definirlo, use la palabra clave Configuration y proporcione un nombre. En este caso, el nombre de la configuración es
MyDscConfiguration. - Uno o más bloques de nodo . Estos definen los nodos (equipos o máquinas virtuales) que está configurando.
En la configuración anterior, hay un bloque Node que tiene como destino un equipo denominado
TEST-PC1. El bloque Node puede aceptar varios nombres de equipo. - Uno o varios bloques de recursos. Aquí es donde la configuración establece las propiedades de los recursos que está configurando. En este caso, hay dos bloques de recursos, cada uno de los cuales llama al recurso WindowsFeature .
Nota:
El recurso de DSC WindowsFeature solo está disponible en equipos Windows Server. Para equipos con un sistema operativo cliente, como Windows 11, debe usar WindowsOptionalFeature en su lugar. Para obtener más información, consulte la sección "WindowsOptionalFeature" de la documentación de PSDscResources.
Dentro de un bloque Configuration , puede hacer cualquier cosa que normalmente podría hacer en una función de PowerShell. En el ejemplo anterior, si no desea codificar de forma rígida el nombre del equipo de destino en la configuración, puede agregar un parámetro para el nombre del nodo.
En este ejemplo, se especifica el nombre del nodo pasándolo como parámetro ComputerName al compilar la configuración. El nombre tiene localhostcomo valor predeterminado .
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
El bloque Node también puede aceptar varios nombres de equipo. En el ejemplo anterior, puede usar el -ComputerName parámetro o pasar una lista de computadoras separadas por comas directamente al bloque Node .
MyDscConfiguration -ComputerName "localhost", "Server01"
Al especificar una lista de equipos para el bloque Node , desde una configuración, debe usar la notación de matriz.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Compilación de la configuración
Antes de poder promulgar una configuración, debe compilarla en un documento MOF. Para ello, llame a la configuración como llamaría a una función de PowerShell. La última línea del ejemplo que contiene solo el nombre de la configuración, llama a la configuración.
Nota:
Para llamar a una configuración, la función debe estar en el ámbito global (como con cualquier otra función de PowerShell). Puede hacer que esto suceda "dot-sourcing" el script o ejecutando el script de configuración usando F5 o haciendo clic en el botón Ejecutar script en el ISE. Para dot-source del script, ejecute el comando . .\myConfig.ps1 where myConfig.ps1 es el nombre del archivo de script que contiene la configuración.
Cuando llama a la configuración:
- Resuelve todas las variables
- Crea una carpeta en el directorio actual con el mismo nombre que la configuración.
- Crea un archivo denominado NodeName.mof en el nuevo directorio, donde NodeName es el nombre del nodo de destino de la configuración. Si hay más de un nodo, se creará un archivo MOF para cada nodo.
Nota:
El archivo MOF contiene toda la información de configuración del nodo de destino. Por este motivo, es importante mantenerlo seguro. Para obtener más información, vea Proteger el archivo MOF.
La compilación de la primera configuración anterior da como resultado la siguiente estructura de carpetas:
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 localhost.mof
Si la configuración toma un parámetro, como en el segundo ejemplo, debe proporcionarse en tiempo de compilación. Así es como se vería:
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Uso de nuevos recursos en su configuración
Si ejecutó los ejemplos anteriores, es posible que haya observado que se le advirtió que estaba usando un recurso sin importarlo explícitamente. En la actualidad, DSC se incluye con 12 recursos como parte del módulo PSDesiredStateConfiguration.
El cmdlet, Get-DscResource, se puede usar para determinar qué recursos están instalados en el sistema y disponibles para su uso por parte de LCM.
Una vez que estos módulos se han colocado $env:PSModulePath y Get-DscResource los reconoce correctamente, aún deben cargarse dentro de la configuración.
Import-DscResource es una palabra clave dinámica que solo se puede reconocer dentro de un bloque de configuración , no es un cmdlet. Import-DscResource admite dos parámetros:
- ModuleName es la forma recomendada de usar Import-DscResource. Acepta el nombre del módulo que contiene los recursos que se van a importar (así como una matriz de cadenas de nombres de módulo).
- Nombre es el nombre del recurso que se va a importar. Este no es el nombre descriptivo devuelto como "Name" por Get-DscResource, sino el nombre de clase que se usa al definir el esquema de recursos (devuelto como ResourceType por Get-DscResource).
Para obtener más información sobre el uso de Import-DSCResource, vea Using Import-DSCResource
Diferencias de PowerShell v4 y v5
Hay diferencias en el lugar donde se deben almacenar los recursos de DSC en PowerShell 4.0. Para obtener más información, consulte Ubicación de recursos.