Problemas y limitaciones conocidos de la configuración de estado deseado (DSC)Desired State Configuration (DSC) Known Issues and Limitations

Cambio de última hora: los certificados usados para cifrar o descifrar contraseñas en configuraciones de DSC no funcionan después de instalar WMF 5.0 RTMBreaking Change: Certificates used to encrypt/decrypt passwords in DSC configurations may not work after installing WMF 5.0 RTM

En las versiones WMF 4.0 y WMF 5.0 Preview, DSC no permitía que las contraseñas de la configuración tuvieran más de 121 caracteres de longitud.In WMF 4.0 and WMF 5.0 Preview releases, DSC would not allow passwords in the configuration to be of length more than 121 characters. DSC obligaba a usar contraseñas cortas, aunque se deseasen contraseñas largas y seguras.DSC was forcing to use short passwords even if lengthy and strong password was desired. Este cambio de última hora permite que las contraseñas tengan una longitud arbitraria en la configuración de DSC.This breaking change allows passwords to be of arbitrary length in the DSC configuration.

Resolución: vuelva a crear el certificado mediante el cifrado de datos o el cifrado de clave, así como con el uso mejorado de claves de cifrado de documentos (1.3.6.1.4.1.311.80.1).Resolution: Re-create the certificate with Data Encipherment or Key Encipherment Key usage, and Document Encryption Enhanced Key usage (1.3.6.1.4.1.311.80.1). Para más información, consulte Protect-CmsMessage.For more information, see Protect-CmsMessage.

Los cmdlets de DSC puede producir un error después de instalar WMF 5.0 RTMDSC cmdlets may fail after installing WMF 5.0 RTM

Start-DscConfiguration y otros cmdlets de DSC pueden generar el siguiente error después de instalar WMF 5.0 RTM:Start-DscConfiguration and other DSC cmdlets may fail after installing WMF 5.0 RTM with the following error:

LCM failed to retrieve the property PendingJobStep from the object of class dscInternalCache .
+ CategoryInfo : ObjectNotFound: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 6
+ PSComputerName : localhost

Resolución: elimine DSCEngineCache.mof. Para ello, ejecute el siguiente comando en una sesión de PowerShell con privilegios elevados (Ejecutar como administrador):Resolution: Delete DSCEngineCache.mof by running the following command in an elevated PowerShell session (Run as Administrator):

Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof

Es posible que los Cmdlets de DSC no funcionen si WMF 5.0 RTM se instala encima de WMF 5.0 Production PreviewDSC cmdlets may not work if WMF 5.0 RTM is installed on top of WMF 5.0 Production Preview

Resolución: ejecute el siguiente comando en una sesión de PowerShell con privilegios elevados (Ejecutar como administrador):Resolution: Run the following command in an elevated PowerShell session (run as administrator):

mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof

LCM puede entrar en un estado inestable al usar Get-DscConfiguration en DebugModeLCM can go into an unstable state while using Get-DscConfiguration in DebugMode

Si LCM está en DebugMode, al presionar CTRL+C para detener el procesamiento de Get-DscConfiguration puede causar que LCM entre en un estado inestable que impida funcionar a la mayoría de los cmdlets de DSC.If LCM is in DebugMode, pressing CTRL+C to stop the processing of Get-DscConfiguration can cause LCM to go into an unstable state such that majority of DSC cmdlets won't work.

Resolución: No presione CTRL+C mientras se depura el cmdlet Get-DscConfiguration.Resolution: Don't press CTRL+C while debugging Get-DscConfiguration cmdlet.

Stop-DscConfiguration puede no responder en DebugModeStop-DscConfiguration may not respond in DebugMode

Si LCM está en DebugMode, es posible que Stop-DscConfiguration no responde mientras se intenta detener una operación iniciada por Get-DscConfigurationIf LCM is in DebugMode, Stop-DscConfiguration may not respond while trying to stop an operation started by Get-DscConfiguration

Resolución: Finalice la depuración de la operación iniciada por Get-DscConfiguration como se describe en Depuración de recursos de DSC.Resolution: Finish the debugging of the operation started by Get-DscConfiguration as outlined in Debugging DSC resources.

No se muestran mensajes de error detallados en DebugModeNo Verbose Error Messages are shown in DebugMode

Si LCM está en DebugMode , no se muestra ningún mensaje de error detallado de recursos de DSC.If LCM is in DebugMode , no verbose error messages are displayed from DSC Resources.

Resolución: deshabilite DebugMode para ver mensajes detallados del recursoResolution: Disable DebugMode to see verbose messages from the resource

Las operaciones Invoke-DscResource no se pueden recuperar mediante el cmdlet Get-DscConfigurationStatusInvoke-DscResource operations cannot be retrieved by Get-DscConfigurationStatus cmdlet

Después de usar el cmdlet Invoke-DscResource para invocar directamente los métodos de cualquier recurso, los registros de dicha operación no se pueden recuperar a través de Get-DscConfigurationStatus.After using Invoke-DscResource cmdlet to directly invoke any resource's methods, the records of such operation cannot be retrieved through Get-DscConfigurationStatus.

Resolución: Ninguno.Resolution: None.

Get-DscConfigurationStatus devuelve operaciones de ciclo de extracción como de tipo ConsistencyGet-DscConfigurationStatus returns pull cycle operations as type Consistency

Cuando un nodo se establece en modo de actualización de extracción, para cada operación de extracción realizada, el cmdlet Get-DscConfigurationStatus indica el tipo de operación como Consistency en lugar de InitialWhen a node is set to PULL refresh mode, for each pull operation performed, Get-DscConfigurationStatus cmdlet reports the operation type as Consistency instead of Initial

Resolución: Ninguno.Resolution: None.

El cmdlet Invoke-DscResource no devuelve los mensajes en el orden en que se producenInvoke-DscResource cmdlet does not return message in the order they were produced

El cmdlet Invoke-DscResource no devuelve los mensajes detallados, de advertencia ni de error en el orden en que los producen LCM o el recurso de DSC.The Invoke-DscResource cmdlet does not return verbose, warning, and error messages in the order they were produced by LCM or the DSC resource.

Resolución: Ninguno.Resolution: None.

Los recursos de DSC no se pueden depurar fácilmente cuando se usan con Invoke-DscResourceDSC Resources cannot be debugged easily when used with Invoke-DscResource

Cuando LCM se ejecuta en modo de depuración, el cmdlet Invoke-DscResource no brinda información sobre el espacio de ejecución al cual conectarse para la depuración.When LCM is running in debug mode, Invoke-DscResource cmdlet does not give information about runspace to connect to for debugging. Para más información, consulte Depuración de recursos de DSC.For more information, see Debugging DSC resources.

Resolución: Descubra el espacio de ejecución y conéctese a él mediante los cmdlets Get-PSHostProcessInfo, Enter-PSHostProcess , Get-Runspace y Debug-Runspace para depurar el recurso de DSC.Resolution: Discover and attach to the runspace using cmdlets Get-PSHostProcessInfo, Enter-PSHostProcess , Get-Runspace and Debug-Runspace to debug the DSC resource.

# Find all the processes hosting PowerShell
Get-PSHostProcessInfo

ProcessName    ProcessId AppDomainName
-----------    --------- -------------
powershell          3932 DefaultAppDomain
powershell_ise      2304 DefaultAppDomain
WmiPrvSE            3396 DscPsPluginWkr_AppDomain

# Enter the process that is hosting DSC engine (WMI process with DscPsPluginWkr_Appdomain)
Enter-PSHostProcess -Id 3396 -AppDomainName DscPsPluginWkr_AppDomain

# Find all the available rusnspaces in that process
Get-Runspace

Id Name       ComputerName Type  State  Availability
-- ----       ------------ ----  -----  ------------
 2 Runspace2  localhost    Local Opened InBreakpoint
 5 RemoteHost localhost    Local Opened Busy

# Debug the runspace that is in **InBreakpoint** availability state
Debug-Runspace -Id 2

Varios documentos de configuración parcial para el mismo nodo no pueden tener nombres de recurso idénticosVarious Partial Configuration documents for same node cannot have identical resource names

Para varias configuraciones parciales implementadas en un mismo nodo, los nombres idénticos de recursos causan un error en tiempo de ejecución.For several partial configurations that are deployed onto a single node, identical names of resources cause run time error.

Resolución: use nombres diferentes para la mismos recursos en distintas configuraciones parciales.Resolution: Use different names for even same resources in different partial configurations.

Start-DscConfiguration –UseExisting no funciona con -CredentialStart-DscConfiguration –UseExisting does not work with -Credential

Si se usa Start-DscConfiguration con el parámetro UseExisting , se omite el parámetro Credential.When using Start-DscConfiguration with UseExisting parameter, the Credential parameter is ignored. DSC usa la identidad de proceso predeterminada para continuar la operación.DSC uses default process identity to proceed the operation. Esto provoca un error cuando se necesita una credencial distinta para continuar en el nodo remoto.This causes error when a different credential is needed to proceed on remote node.

Resolución: use una sesión CIM para las operaciones remotas de DSC:Resolution: Use CIM session for remote DSC operations:

$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session

Direcciones IPv6 como nombres de nodo en configuraciones de DSCIPv6 Addresses as Node Names in DSC configurations

No se admiten direcciones IPv6 como nombres de nodo en los scripts de configuración de DSC en esta versión.IPv6 addresses as node names in DSC configuration scripts are not supported in this release.

Resolución: Ninguno.Resolution: None.

Depuración de recursos de DSC Class-BasedDebugging of Class-Based DSC Resources

En esta versión no se admite la depuración de los recursos de DSC basado en clases.Debugging of class-based DSC Resources is not supported in this release.

Resolución: Ninguno.Resolution: None.

Las variables y las funciones que se definen en el ámbito de $script en el recurso basado en clases de DSC no se conservan en varias llamadas a un recurso de DSCVariables and functions defined in $script scope in DSC Class-Based Resource are not preserved across multiple calls to a DSC Resource

Varias llamadas consecutivas a Start-DSCConfiguration producirán un error si la configuración usa cualquier recurso basado en clases que tenga variables o funciones definidas en el ámbito de $script.Multiple consecutive calls to Start-DSCConfiguration fails if the configuration is using any class-based resource which has variables or functions defined in $script scope.

Resolución: defina todas las variables y funciones de la propia clase de recurso de DSC.Resolution: Define all variables and functions in DSC Resource class itself. No usar funciones o variables de ámbito $script.No $script scope variables/functions.

Depuración de recursos de DSC cuando un recurso usa PSDscRunAsCredentialDSC Resource Debugging when a resource is using PSDscRunAsCredential

La depuración de recursos de DSC cuando un recurso usa la propiedad PSDscRunAsCredential en la configuración no se admite en esta versión.DSC Resource debugging when a resource is using the PSDscRunAsCredential property in the configuration is not supported in this release.

Resolución: Ninguno.Resolution: None.

PsDscRunAsCredential no se admite para los recursos compuestos de DSCPsDscRunAsCredential is not supported for DSC Composite Resources

Resolución: use la propiedad Credential si está disponible.Resolution: Use Credential property if available. ServiceSet y WindowsFeatureSet de ejemploExample ServiceSet and WindowsFeatureSet

Get-DscResource -Syntax no refleja PsDscRunAsCredential correctamenteGet-DscResource -Syntax does not reflect PsDscRunAsCredential correctly

El parámetro Syntax no refleja correctamente la propiedad PsDscRunAsCredential cuando el recurso la marca como obligatoria o no la admite.The Syntax parameter does not reflect PsDscRunAsCredential correctly when resource marks it as mandatory or does not support it.

Resolución: Ninguno.Resolution: None. Sin embargo, la configuración de creación en ISE refleja los metadatos correctos acerca de la propiedad PsDscRunAsCredential al usar IntelliSense.However, authoring configuration in ISE reflects correct metadata about PsDscRunAsCredential property when using IntelliSense.

WindowsOptionalFeature no está disponible en Windows 7WindowsOptionalFeature is not available in Windows 7

El recurso de DSC WindowsOptionalFeature no está disponible en Windows 7.The WindowsOptionalFeature DSC resource is not available in Windows 7. Este recurso requiere el módulo DISM, así como los cmdlets DISM que están disponibles a partir de Windows 8 y versiones más recientes del sistema operativo Windows.This resource requires the DISM module, and DISM cmdlets that are available starting in Windows 8 and newer releases of the Windows operating system.

En el caso de los recursos de DSC basados en clases, puede que Import-DscResource -ModuleVersion no funcione según lo previstoFor Class-based DSC resources, Import-DscResource -ModuleVersion may not work as expected

Si el nodo de compilación tiene varias versiones de un módulo de recursos de DSC basados en clases, Import-DscResource -ModuleVersion no podrá seleccionar la versión especificada y genera el siguiente error de compilación.If the compilation node has multiple versions of a class-based DSC resource module, Import-DscResource -ModuleVersion does not pick the specified version and results in following compilation error.

ImportClassResourcesFromModule : Exception calling "ImportClassResourcesFromModule" with "3" argument(s):
 "Keyword 'MyTestResource' already defined in the configuration."
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:2035 char:35
+ ... rcesFound = ImportClassResourcesFromModule -Module $mod -Resources $r ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [ImportClassResourcesFromModule], MethodInvocationException
    + FullyQualifiedErrorId : PSInvalidOperationException,ImportClassResourcesFromModule

Resolución: importe la versión necesaria mediante la defición del objeto ModuleSpecification al parámetro ModuleName con la clave RequiredVersion especificada como sigue:Resolution: Import the required version by defining the ModuleSpecification object to the ModuleName parameter with RequiredVersion key specified as follows:

Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}

Algunos recursos de DSC, como el recurso de registro, pueden comenzar a tardar mucho tiempo en procesar la solicitud.Some DSC resources like registry resource may start to take a long time to process the request.

Solución 1: cree una tarea de programación que limpie periódicamente la siguiente carpeta.Resolution 1: Create a schedule task that cleans up the following folder periodically.

$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis

Solución 2: cambie la configuración de DSC para limpiar la carpeta CommandAnalysis al final de la configuración.Resolution 2: Change the DSC configuration to clean up the CommandAnalysis folder at the end of the configuration.

Configuration $configName
{

   # User Data
    Registry SetRegisteredOwner
    {
        Ensure = 'Present'
        Force = $True
        Key = $Node.RegisteredKey
        ValueName = $Node.RegisteredOwnerValue
        ValueType = 'String'
        ValueData = $Node.RegisteredOwnerData
    }
    #
    # Script to delete the config
    #
    script DeleteCommandAnalysisCache
    {
        DependsOn = "[Registry]SetRegisteredOwner"
        getscript = "@{}"
        testscript = 'Remove-Item -Path $env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis -Force -Recurse -ErrorAction SilentlyContinue -ErrorVariable ev | out-null;$true'
        setscript = '$true'
    }
}