Problemas y limitaciones conocidos de la configuración de estado deseado (DSC)
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 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. DSC obligaba a usar contraseñas cortas, aunque se deseasen contraseñas largas y seguras. Este cambio de última hora permite que las contraseñas tengan una longitud arbitraria en la configuración de DSC.
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). Para más información, consulte Protect-CmsMessage.
Los cmdlets de DSC puede producir un error después de instalar WMF 5.0 RTM
Start-DscConfiguration
y otros cmdlets de DSC pueden generar el siguiente error después de instalar WMF 5.0 RTM:
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):
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 Preview
Resolución: ejecute el siguiente comando en una sesión de PowerShell con privilegios elevados (Ejecutar como administrador):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
LCM puede entrar en un estado inestable al usar Get-DscConfiguration en 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.
Resolución: No presione CTRL+C mientras se depura el cmdlet Get-DscConfiguration
.
Stop-DscConfiguration puede no responder en DebugMode
Si LCM está en DebugMode, es posible que Stop-DscConfiguration
no responde mientras se intenta detener una operación iniciada por 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.
No se muestran mensajes de error detallados en DebugMode
Si LCM está en DebugMode, no se muestra ningún mensaje de error detallado de recursos de DSC.
Resolución: deshabilite DebugMode para ver mensajes detallados del recurso
Las operaciones Invoke-DscResource no se pueden recuperar mediante el cmdlet Get-DscConfigurationStatus
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
.
Resolución: Ninguno.
Get-DscConfigurationStatus devuelve operaciones de ciclo de extracción como de tipo 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 Initial
Resolución: Ninguno.
El cmdlet Invoke-DscResource no devuelve los mensajes en el orden en que se producen
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.
Resolución: Ninguno.
Los recursos de DSC no se pueden depurar fácilmente cuando se usan con 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. Para más información, consulte Depuración de recursos de DSC.
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.
# 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énticos
Para varias configuraciones parciales implementadas en un mismo nodo, los nombres idénticos de recursos causan un error en tiempo de ejecución.
Resolución: use nombres diferentes para la mismos recursos en distintas configuraciones parciales.
Start-DscConfiguration –UseExisting no funciona con -Credential
Si se usa Start-DscConfiguration
con el parámetro UseExisting, se omite el parámetro Credential. DSC usa la identidad de proceso predeterminada para continuar la operación. Esto provoca un error cuando se necesita una credencial distinta para continuar en el nodo remoto.
Resolución: use una sesión CIM para las operaciones remotas de DSC:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
Direcciones IPv6 como nombres de nodo en configuraciones de DSC
No se admiten direcciones IPv6 como nombres de nodo en los scripts de configuración de DSC en esta versión.
Resolución: Ninguno.
Depuración de recursos de DSC Class-Based
En esta versión no se admite la depuración de los recursos de DSC basado en clases.
Resolución: Ninguno.
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 DSC
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
.
Resolución: defina todas las variables y funciones de la propia clase de recurso de DSC. No usar funciones o variables de ámbito $script
.
Depuración de recursos de DSC cuando un recurso usa 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.
Resolución: Ninguno.
PsDscRunAsCredential no se admite para los recursos compuestos de DSC
Resolución: use la propiedad Credential si está disponible. ServiceSet y WindowsFeatureSet de ejemplo
Get-DscResource -Syntax no refleja PsDscRunAsCredential correctamente
El parámetro Syntax no refleja correctamente la propiedad PsDscRunAsCredential cuando el recurso la marca como obligatoria o no la admite.
Resolución: Ninguno. Sin embargo, la configuración de creación en ISE refleja los metadatos correctos acerca de la propiedad PsDscRunAsCredential al usar IntelliSense.
WindowsOptionalFeature no está disponible en Windows 7
El recurso de DSC WindowsOptionalFeature no está disponible en 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.
En el caso de los recursos de DSC basados en clases, puede que Import-DscResource -ModuleVersion no funcione según lo previsto
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.
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:
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.
Solución 1: cree una tarea de programación que limpie periódicamente la siguiente carpeta.
$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.
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'
}
}