Bekende problemen en beperkingen van Desired State Configuration (DSC)
Wijziging die fouten veroorzaakt: Certificaten die worden gebruikt voor het versleutelen/ontsleutelen van wachtwoorden in DSC-configuraties werken mogelijk niet na de installatie van WMF 5.0 RTM
In versies van WMF 4.0 en WMF 5.0 Preview staat DSC niet toe dat wachtwoorden in de configuratie langer zijn dan 121 tekens. DSC dwong het gebruik van korte wachtwoorden af, zelfs als een lang en sterk wachtwoord gewenst was. Door deze wijziging die fouten veroorzaakt, kunnen wachtwoorden een willekeurige lengte hebben in de DSC-configuratie.
Resolutie: Maak het certificaat opnieuw met gegevenscodering of sleutelcoderingssleutelgebruik en gebruik van uitgebreide sleutel voor documentversleuteling (1.3.6.1.4.1.311.80.1). Zie Protect-CmsMessage voor meer informatie.
DSC-cmdlets kunnen mislukken na de installatie van WMF 5.0 RTM
Start-DscConfiguration
en andere DSC-cmdlets kunnen mislukken na installatie van WMF 5.0 RTM met de volgende fout:
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
Resolutie: Verwijder DSCEngineCache.mof door de volgende opdracht uit te voeren in een PowerShell-sessie met verhoogde bevoegdheid (uitvoeren als administrator):
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
DSC-cmdlets werken mogelijk niet als WMF 5.0 RTM is geïnstalleerd boven op WMF 5.0 Production Preview
Resolutie: Voer de volgende opdracht uit in een PowerShell-sessie met verhoogde bevoegdheid (voer uit als administrator):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
LCM kan in een instabiele status gaan tijdens het gebruik van Get-DscConfiguration in DebugMode
Als LCM zich in DebugMode bevindt, kan het drukken op Ctrl+C om de verwerking van Get-DscConfiguration
te stoppen, ertoe leiden dat LCM in een instabiele status gaat, zodat de meeste DSC-cmdlets niet werken.
Resolutie: Druk niet op Ctrl+C tijdens het opsporen van fouten Get-DscConfiguration
in de cmdlet.
Stop-DscConfiguration reageert mogelijk niet in DebugMode
Als LCM zich in DebugMode bevindt, Stop-DscConfiguration
reageert mogelijk niet tijdens het stoppen van een bewerking die is gestart door Get-DscConfiguration
Resolutie: Voltooi de foutopsporing van de bewerking die is gestart door Get-DscConfiguration
, zoals beschreven in Foutopsporing van DSC-resources.
Er worden geen uitgebreide foutberichten weergegeven in DebugMode
Als LCM zich in DebugMode bevindt, worden er geen uitgebreide foutberichten weergegeven vanuit DSC-resources.
Resolutie:Schakel DebugMode uit om uitgebreide berichten van de resource weer te geven
Invoke-DscResource bewerkingen kunnen niet worden opgehaald door Get-DscConfigurationStatus cmdlet
Nadat u de cmdlet hebt gebruikt Invoke-DscResource
om de methoden van een resource rechtstreeks aan te roepen, kunnen de records van een dergelijke bewerking niet worden opgehaald via Get-DscConfigurationStatus
.
Resolutie: Geen.
Get-DscConfigurationStatus retourneert pull-cyclusbewerkingen als type Consistentie
Wanneer een knooppunt is ingesteld op de PULL-vernieuwingsmodus, rapporteert cmdlet voor elke uitgevoerde Get-DscConfigurationStatus
pull-bewerking het bewerkingstype als Consistentie in plaats van Initial
Resolutie: Geen.
Invoke-DscResource cmdlet retourneert geen bericht in de volgorde waarin ze zijn geproduceerd
De Invoke-DscResource
cmdlet retourneert geen uitgebreide, waarschuwings- en foutberichten in de volgorde waarin ze zijn geproduceerd door LCM of de DSC-resource.
Resolutie: Geen.
DSC-resources kunnen niet eenvoudig worden opgespoord wanneer ze worden gebruikt met Invoke-DscResource
Wanneer LCM wordt uitgevoerd in de foutopsporingsmodus, Invoke-DscResource
geeft de cmdlet geen informatie over runspace waarmee verbinding moet worden gemaakt voor foutopsporing. Zie Foutopsporing van DSC-resources voor meer informatie.
Resolutie: Detecteer en koppel deze aan de runspace met behulp van cmdlets Get-PSHostProcessInfo
, Enter-PSHostProcess
en Get-Runspace
Debug-Runspace
om fouten in de DSC-resource op te sporen.
# 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
Verschillende gedeeltelijke configuratiedocumenten voor hetzelfde knooppunt mogen geen identieke resourcenamen hebben
Voor verschillende gedeeltelijke configuraties die zijn geïmplementeerd op één knooppunt, veroorzaken identieke namen van resources een uitvoeringsfout.
Resolutie: Gebruik verschillende namen voor dezelfde resources in verschillende gedeeltelijke configuraties.
Start-DscConfiguration – UseExisting werkt niet met -Credential
Bij gebruik Start-DscConfiguration
met de parameter UseExisting wordt de parameter Credential genegeerd. DSC maakt gebruik van de standaardprocesidentiteit om de bewerking voort te zetten. Dit veroorzaakt een fout wanneer een andere referentie nodig is om door te gaan op een extern knooppunt.
Resolutie: CIM-sessie gebruiken voor externe DSC-bewerkingen:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
IPv6-adressen als knooppuntnamen in DSC-configuraties
IPv6-adressen als knooppuntnamen in DSC-configuratiescripts worden niet ondersteund in deze release.
Resolutie: Geen.
Foutopsporing van Class-Based
DSC-resources
Foutopsporing van dsc-resources op basis van klassen wordt niet ondersteund in deze release.
Resolutie: Geen.
Variabelen en functies die zijn gedefinieerd in $script bereik in DSC Class-Based Resource blijven niet behouden bij meerdere aanroepen naar een DSC-resource
Meerdere opeenvolgende aanroepen naar Start-DSCConfiguration
mislukken als de configuratie gebruikmaakt van een op klassen gebaseerde resource waarvoor variabelen of functies zijn gedefinieerd in $script
het bereik.
Resolutie: Definieer alle variabelen en functies in de DSC-resourceklasse zelf. Geen $script
bereikvariabelen/functies.
DSC-resourceopsporing wanneer een resource PSDscRunAsCredential gebruikt
Foutopsporing van DSC-resources wanneer een resource de eigenschap PSDscRunAsCredential in de configuratie gebruikt, wordt niet ondersteund in deze release.
Resolutie: Geen.
PsDscRunAsCredential wordt niet ondersteund voor samengestelde DSC-resources
Resolutie: Gebruik de eigenschap Credential indien beschikbaar. Voorbeeld van ServiceSet en WindowsFeatureSet
Get-DscResource -Syntaxis geeft PsDscRunAsCredential niet correct weer
De syntaxisparameter geeft PsDscRunAsCredential niet correct weer wanneer de resource deze als verplicht markeert of deze niet ondersteunt.
Resolutie: Geen. De ontwerpconfiguratie in ISE weerspiegelt echter de juiste metagegevens over de eigenschap PsDscRunAsCredential bij gebruik van IntelliSense.
WindowsOptionalFeature is niet beschikbaar in Windows 7
De DSC-resource WindowsOptionalFeature is niet beschikbaar in Windows 7. Voor deze resource zijn de DISM-module en DISM-cmdlets vereist die beschikbaar zijn vanaf Windows 8 en nieuwere versies van het Windows-besturingssysteem.
Voor DSC-resources op basis van klassen werkt Import-DscResource -ModuleVersion mogelijk niet zoals verwacht
Als het compilatieknooppunt meerdere versies van een op klassen gebaseerde DSC-resourcemodule heeft, Import-DscResource -ModuleVersion
kiest niet de opgegeven versie en resulteert in de volgende compilatiefout.
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
Resolutie: Importeer de vereiste versie door het object ModuleSpecification te definiëren in de parameter ModuleName met de requiredVersion-sleutel die als volgt is opgegeven:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Voor sommige DSC-resources, zoals registerresources, kan het lang duren voordat de aanvraag is verwerkt.
Oplossing 1: Creatie een planningstaak waarmee de volgende map periodiek wordt opgeschoond.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
Oplossing 2: Wijzig de DSC-configuratie om de map CommandAnalysis aan het einde van de configuratie op te schonen.
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'
}
}