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
La configuración de estado deseado de PowerShell se construye en torno a un proceso Get, Test y Set . Cada uno de los recursos de DSC contiene métodos para completar cada una de estas operaciones. En una configuración, se definen bloques de recursos para rellenar claves que se convierten en parámetros para los métodos Get, Test y Set de un recurso.
Esta es la sintaxis de un bloque de recursos de servicio . El recurso Service configura los servicios de Windows.
Service [String] #ResourceName
{
Name = [string]
[BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
[Credential = [PSCredential]]
[Dependencies = [string[]]]
[DependsOn = [string[]]]
[Description = [string]]
[DisplayName = [string]]
[Ensure = [string]{ Absent | Present }]
[Path = [string]]
[PsDscRunAsCredential = [PSCredential]]
[StartupType = [string]{ Automatic | Disabled | Manual }]
[State = [string]{ Running | Stopped }]
}
Los métodos Get, Test y Set del recurso Service tendrán bloques de parámetros que acepten estos valores.
param
(
[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$Name,
[System.String]
[ValidateSet("Automatic", "Manual", "Disabled")]
$StartupType,
[System.String]
[ValidateSet("LocalSystem", "LocalService", "NetworkService")]
$BuiltInAccount,
[System.Management.Automation.PSCredential]
[ValidateNotNull()]
$Credential,
[System.String]
[ValidateSet("Running", "Stopped")]
$State="Running",
[System.String]
[ValidateNotNullOrEmpty()]
$DisplayName,
[System.String]
[ValidateNotNullOrEmpty()]
$Description,
[System.String]
[ValidateNotNullOrEmpty()]
$Path,
[System.String[]]
[ValidateNotNullOrEmpty()]
$Dependencies,
[System.String]
[ValidateSet("Present", "Absent")]
$Ensure="Present"
)
Nota:
El lenguaje y el método utilizados para definir el recurso determinan cómo se definirán los métodos Get, Test y Set .
Dado que el recurso de servicio solo tiene una clave necesaria (Name), un recurso de bloque de servicio podría ser tan simple como esto:
Configuration TestConfig
{
Import-DSCResource -Name Service
Node localhost
{
Service "MyService"
{
Name = "Spooler"
}
}
}
Cuando compila la configuración anterior, los valores que especifique para una clave se almacenan en el .mof archivo que se genera. Para obtener más información, consulte MOF.
instance of MSFT_ServiceResource as $MSFT_ServiceResource1ref
{
SourceInfo = "::5::1::Service";
ModuleName = "PsDesiredStateConfiguration";
ResourceID = "[Service]MyService";
Name = "Spooler";
ModuleVersion = "1.0";
ConfigurationName = "Test";
};
Cuando se aplica, el Administrador de configuración local (LCM) leerá el valor "Spooler" del .mof archivo y lo pasará al parámetro Name de los métodos Get, Test y Set para la instancia "MyService" del recurso Service .
Obtener
El método Get de un recurso recupera el estado del recurso tal como se configura en el nodo de destino. Este estado se devuelve como una tabla hash. Las claves de la tabla hash serán los valores configurables, o parámetros, que acepta el recurso.
El método Get se asigna directamente al cmdlet Get-DSCConfiguration .
Cuando llama a Get-DSCConfiguration, LCM ejecuta el método Get de cada recurso en la configuración aplicada actualmente. El LCM utiliza los valores clave almacenados en el .mof archivo como parámetros para cada instancia de recurso correspondiente.
Esta es una salida de ejemplo de un recurso de servicio que configura el servicio "Spooler".
ConfigurationName : Test
DependsOn :
ModuleName : PsDesiredStateConfiguration
ModuleVersion : 1.1
PsDscRunAsCredential :
ResourceId : [Service]Spooler
SourceInfo :
BuiltInAccount : LocalSystem
Credential :
Dependencies : {RPCSS, http}
Description : This service spools print jobs and handles interaction with the printer. If you turn off
this service, you won't be able to print or see your printers.
DisplayName : Print Spooler
Ensure :
Name : Spooler
Path : C:\WINDOWS\System32\spoolsv.exe
StartupType : Automatic
State : Running
Status :
PSComputerName :
CimClassName : MSFT_ServiceResource
El resultado muestra las propiedades del valor actual configurables por el recurso de servicio .
Service [String] #ResourceName
{
Name = [string]
[BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
[Credential = [PSCredential]]
[Dependencies = [string[]]]
[DependsOn = [string[]]]
[Description = [string]]
[DisplayName = [string]]
[Ensure = [string]{ Absent | Present }]
[Path = [string]]
[PsDscRunAsCredential = [PSCredential]]
[StartupType = [string]{ Automatic | Disabled | Manual }]
[State = [string]{ Running | Stopped }]
}
Test
El método Test de un recurso determina si el nodo de destino es compatible actualmente con el estado deseado del recurso. El método Test devuelve $true o $false solo para indicar si el nodo es compatible. Al llamar a Test-DSCConfiguration, LCM llama al método Test de cada recurso de la configuración aplicada actualmente. El LCM utiliza los valores clave almacenados en el archivo ".mof" como parámetros para cada instancia de recurso correspondiente.
Si el resultado de la prueba de cualquier recurso individual es $false, Test-DSCConfiguration devuelve $false lo que indica que el nodo no es compatible. Si todos los métodos de prueba del recurso devuelven $true, Test-DSCConfiguration vuelve $true a indicar que el nodo es compatible.
Test-DSCConfiguration
True
A partir de PowerShell 5.0, se agregó el parámetro Detailed . Especificar causas Test-DSCConfigurationdetalladas para devolver un objeto que contiene colecciones de resultados para recursos compatibles y no compatibles.
Test-DSCConfiguration -Detailed
PSComputerName ResourcesInDesiredState ResourcesNotInDesiredState InDesiredState
-------------- ----------------------- -------------------------- --------------
localhost {[Service]Spooler} True
Para obtener más información, consulte Test-DSCConfiguration.
Establecer
El método Set de un recurso intenta forzar al nodo para que sea compatible con el estado deseado del recurso. El método Set está destinado a ser idempotente, lo que significa que Set podría ejecutarse varias veces y obtener siempre el mismo resultado sin errores. Cuando ejecuta Start-DSCConfiguration, LCM recorre cada recurso en la configuración aplicada actualmente. LCM recupera los valores clave de la instancia de recurso actual del archivo ".mof" y los utiliza como parámetros para el método Test . Si el método Test devuelve $true, el nodo es compatible con el recurso actual y se omite el método Set . Si la prueba devuelve $false, el nodo no es compatible. LCM pasa los valores clave de la instancia de recurso como parámetros al método Set del recurso, lo que restaura el cumplimiento del Node.
Al especificar los parámetros Verbose y Wait , puede ver el progreso del Start-DSCConfiguration cmdlet. En este ejemplo, el nodo ya es compatible. El Verbose resultado indica que se omitió el método Set .
PS> Start-DSCConfiguration -Verbose -Wait -UseExisting
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' =
ApplyConfiguration,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer SERVER01 with user sid
S-1-5-21-124525095-708259637-1543119021-1282804.
VERBOSE: [SERVER01]: [] Starting consistency engine.
VERBOSE: [SERVER01]: [] Checking consistency for current configuration.
VERBOSE: [SERVER01]: [DSCEngine] Importing the module
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\DscResources\MSFT_ServiceResource\MSFT
_ServiceResource.psm1 in force mode.
VERBOSE: [SERVER01]: LCM: [ Start Resource ] [[Service]Spooler]
VERBOSE: [SERVER01]: LCM: [ Start Test ] [[Service]Spooler]
VERBOSE: [SERVER01]: [[Service]Spooler] Importing the module MSFT_ServiceResource in
force mode.
VERBOSE: [SERVER01]: LCM: [ End Test ] [[Service]Spooler] in 0.2540 seconds.
VERBOSE: [SERVER01]: LCM: [ Skip Set ] [[Service]Spooler]
VERBOSE: [SERVER01]: LCM: [ End Resource ] [[Service]Spooler]
VERBOSE: [SERVER01]: [] Consistency check completed.
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 1.379 seconds