Desired State Configuration (DSC) bekende problemen en beperkingenDesired State Configuration (DSC) Known Issues and Limitations

Belangrijke wijziging: Certificaten die worden gebruikt voor het versleutelen/ontsleutelen van wachtwoorden in DSC-configuraties werkt mogelijk niet na de installatie van WMF 5.0 RTMBreaking Change: Certificates used to encrypt/decrypt passwords in DSC configurations may not work after installing WMF 5.0 RTM

In WMF 4.0 en WMF 5.0 Preview-versies, DSC zou niet toestaan dat wachtwoorden in de configuratie met een lengte van meer dan 121 tekens.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 is geforceerd korte om wachtwoorden te gebruiken, zelfs als langdurige en een sterk wachtwoord is gewenst is.DSC was forcing to use short passwords even if lengthy and strong password was desired. Deze belangrijke wijziging kan wachtwoorden van willekeurige lengte in de DSC-configuratie.This breaking change allows passwords to be of arbitrary length in the DSC configuration.

Oplossing: Opnieuw maken van het certificaat met gegevenscodering of sleutel uitwisselen sleutel gebruik en Document versleuteling Enhanced Key usage (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). TechNet-artikel https://technet.microsoft.com/library/dn807171.aspx bevat meer informatie.Technet article https://technet.microsoft.com/library/dn807171.aspx has more information.

DSC-cmdlets kunnen mislukken na de installatie van WMF 5.0 RTMDSC cmdlets may fail after installing WMF 5.0 RTM

Start-DscConfiguration en andere cmdlets DSC mislukken na de installatie van WMF 5.0 RTM met de volgende fout: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

Oplossing: DSCEngineCache.mof verwijderen door het uitvoeren van de volgende opdracht uit in een verhoogde PowerShell-sessie (als Administrator uitvoeren):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

DSC-cmdlets werken niet als WMF 5.0 RTM boven op WMF 5.0 productie Preview is geïnstalleerdDSC cmdlets may not work if WMF 5.0 RTM is installed on top of WMF 5.0 Production Preview

Oplossing: Voer de volgende opdracht uit in een sessie met verhoogde bevoegdheden PowerShell (als administrator uitvoeren):Resolution: Run the following command in an elevated PowerShell session (run as administrator):

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

LCM kunt in tot een instabiele status gaan tijdens het gebruik van Get-DscConfiguration in fouten opsporen-modusLCM can go into an unstable state while using Get-DscConfiguration in DebugMode

Als LCM fouten opsporen-modus, op CTRL + C om te stoppen van de verwerking van Get-DscConfiguration kan leiden tot LCM om te gaan naar een instabiele status dergelijke die meerderheid van de DSC-cmdlets werken niet.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.

Oplossing: Geen druk op CTRL + C tijdens het opsporen van fouten in de cmdlet Get-DscConfiguration.Resolution: Don’t press CTRL+C while debugging Get-DscConfiguration cmdlet.

Stop-DscConfiguration loopt vast in fouten opsporen-modusStop-DscConfiguration may hang in DebugMode

Als LCM fouten opsporen-modus, loopt Stop-DscConfiguration vast tijdens het stoppen van een bewerking aan de slag door Get-DscConfigurationIf LCM is in DebugMode, Stop-DscConfiguration may hang while trying to stop an operation started by Get-DscConfiguration

Oplossing: Voltooien van de foutopsporing van de bewerking aan de slag door Get-DscConfiguration, zoals wordt beschreven in de sectie 'foutopsporing DSC-resources'.Resolution: Finish the debugging of the operation started by Get-DscConfiguration as outlined in section ‘Debugging DSC resources’.

Er is geen uitgebreide foutberichten worden weergegeven in fouten opsporen-modusNo Verbose Error Messages are shown in DebugMode

Als LCM fouten opsporen-modus, worden er geen uitgebreide foutberichten van DSC-Resources weergegeven.If LCM is in DebugMode, no verbose error messages are displayed from DSC Resources.

Oplossing: Uitschakelen fouten opsporen-modus om te zien uitgebreide berichten uit de bronResolution: Disable DebugMode to see verbose messages from the resource

Sleutelwoorden Invoke-dscresource bieden bewerkingen kunnen niet worden opgehaald door de cmdlet Get-DscConfigurationStatusInvoke-DscResource operations cannot be retrieved by Get-DscConfigurationStatus cmdlet

Nadat u de cmdlet Invoke-sleutelwoorden dscresource bieden rechtstreeks aanroepen van een resource-methoden, kunnen niet de records van deze bewerking worden opgehaald via Get-DscConfigurationStatus op een later tijdstip.After using Invoke-DscResource cmdlet to directly invoke any resource’s methods, the records of such operation cannot be retrieved through Get-DscConfigurationStatus at a later time.

Oplossing: Geen.Resolution: None.

Get-DscConfigurationStatus retourneert pull cyclus bewerkingen als type consistentieGet-DscConfigurationStatus returns pull cycle operations as type Consistency

Wanneer een knooppunt is ingesteld op PULL vernieuwen-modus, voor elke pullbewerking uitgevoerd, de cmdlet Get-DscConfigurationStatus rapporten van het bewerkingstype als consistentie in plaats van initiëleWhen 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

Oplossing: Geen.Resolution: None.

Sleutelwoorden Invoke-dscresource bieden cmdlet retourneert geen bericht in de volgorde waarin die ze zijn gemaaktInvoke-DscResource cmdlet does not return message in the order they were produced

De cmdlet Invoke-sleutelwoorden dscresource bieden retourneert geen uitgebreide, waarschuwing, en foutberichten in de volgorde waarin die ze zijn geproduceerd door LCM of de DSC-resource.The Invoke-DscResource cmdlet does not return verbose, warning, and error messages in the order they were produced by LCM or the DSC resource.

Oplossing: Geen.Resolution: None.

DSC-Resources kan niet eenvoudig worden opgespoord gebruikt in combinatie met sleutelwoorden Invoke-dscresource biedenDSC Resources cannot be debugged easily when used with Invoke-DscResource

Als LCM wordt uitgevoerd in de foutopsporingsmodus (Zie foutopsporing DSC-resources voor meer informatie), sleutelwoorden Invoke-dscresource bieden cmdlet geeft geen informatie over runspace verbinding maakt met voor foutopsporing.When LCM is running in debug mode (see Debugging DSC resources for more details), Invoke-DscResource cmdlet does not give information about runspace to connect to for debugging. Oplossing: Detecteren en te koppelen aan de runspace met behulp van cmdlets Get-PSHostProcessInfo, Enter PSHostProcess , Get-Runspace en Debug-Runspace fouten opsporen in de DSC-resource.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

Verschillende gedeeltelijke configuratie documenten voor hetzelfde knooppunt geen identieke resourcenamenVarious Partial Configuration documents for same node cannot have identical resource names

Voor verschillende gedeeltelijke configuraties die zijn geïmplementeerd op één knooppunt, runtimefout identieke namen van resources oorzaak.For several partial configurations that are deployed onto a single node, identical names of resources cause run time error.

Oplossing: Gebruik verschillende namen voor zelfs dezelfde resources in verschillende gedeeltelijke configuraties.Resolution: Use different names for even same resources in different partial configurations.

Start-DscConfiguration – UseExisting werkt niet met - referentieStart-DscConfiguration –UseExisting does not work with -Credential

Als u de Start-DscConfiguration voor de parameter – UseExisting, de referentie parameter wordt genegeerd.When using Start-DscConfiguration with –UseExisting parameter, the –Credential parameter is ignored. DSC gebruikt standaard procesidentiteit om door te gaan van de bewerking.DSC uses default process identity to proceed the operation. Dit veroorzaakt fout als een andere referentie nodig is om door te gaan op een extern knooppunt.This causes error when a different credential is needed to proceed on remote node.

Oplossing: Gebruik CIM-sessie voor externe DSC-bewerkingen:Resolution: Use CIM session for remote DSC operations:

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

IPv6-adressen aan de namen in de DSC-configuraties van knooppuntIPv6 Addresses as Node Names in DSC configurations

IPv6-adressen als knooppuntnamen in scripts voor DSC-configuratie worden niet ondersteund in deze release.IPv6 addresses as node names in DSC configuration scripts are not supported in this release.

Oplossing: Geen.Resolution: None.

Foutopsporing op basis van een klasse DSC-resourcesDebugging of Class-Based DSC Resources

Foutopsporing voor DSC-Resources op basis van een klasse wordt niet ondersteund in deze release.Debugging of class-based DSC Resources is not supported in this release.

Oplossing: Geen.Resolution: None.

Variabelen en functies die zijn gedefinieerd binnen het bereik van $script in DSC-Resource op basis van een klasse zijn niet behouden in meerdere aanroepen naar een DSC-ResourceVariables & Functions defined in $script scope in DSC Class-Based Resource are not preserved across multiple calls to a DSC Resource

Meerdere opeenvolgende aanroepen naar Start-DSCConfiguration mislukt als de configuratie met behulp van een resource op basis van een klasse die variabelen of functies die zijn gedefinieerd in $script bereik heeft.Multiple consecutive calls to Start-DSCConfiguration will fail if configuration is using any class-based resource which has variables or functions defined in $script scope.

Oplossing: Definieer alle variabelen en -functies in DSC-Resource-klasse zelf.Resolution: Define all variables and functions in DSC Resource class itself. Functies/No $script bereik variabelen.No $script scope variables/functions.

DSC-Resource foutopsporing als een resource PSDscRunAsCredentialDSC Resource Debugging when a resource is using PSDscRunAsCredential

DSC-Resource foutopsporing bij het gebruik van een resource de PSDscRunAsCredential eigenschap in de configuratie is niet suported in deze release.DSC Resource debugging when a resource is using the PSDscRunAsCredential property in the configuration is not suported in this release.

Oplossing: Geen.Resolution: None.

PsDscRunAsCredential wordt niet ondersteund voor samengestelde DSC-ResourcesPsDscRunAsCredential is not supported for DSC Composite Resources

Oplossing: Referentie-eigenschap gebruiken indien beschikbaar.Resolution: Use Credential property if available. Voorbeeld van de ServiceSet en WindowsFeatureSetExample ServiceSet and WindowsFeatureSet

Sleutelwoorden Get-dscresource bieden-syntaxis PsDscRunAsCredential niet correct wordt weergegevenGet-DscResource -Syntax does not reflect PsDscRunAsCredential correctly

Sleutelwoorden Get-dscresource bieden-syntaxis komt niet overeen met PsDscRunAsCredential correct als resource gemarkeerd als verplicht of dit wordt niet ondersteund.Get-DscResource -Syntax does not reflect PsDscRunAsCredential correctly when resource marks it as mandatory or does not support it.

Oplossing: Geen.Resolution: None. Echter weerspiegelt ontwerpen configuratie in ISE juiste metagegevens over PsDscRunAsCredential eigenschap bij het gebruik van IntelliSense.However, authoring configuration in ISE reflects correct metadata about PsDscRunAsCredential property when using IntelliSense.

WindowsOptionalFeature is niet beschikbaar in Windows 7WindowsOptionalFeature is not available in Windows 7

De DSC WindowsOptionalFeature-resource is niet beschikbaar in Windows 7.The WindowsOptionalFeature DSC resource is not available in Windows 7. Deze resource is vereist voor de DISM-module en de DISM-cmdlets zijn beschikbaar vanaf Windows 8 en nieuwere versies van het Windows-besturingssysteem.This resource requires the DISM module, and DISM cmdlets that are available starting in Windows 8 and newer releases of the Windows operating system.

Voor klasse op basis van DSC-resources, sleutelwoorden Import-dscresource bieden - ModuleVersion werkt mogelijk niet zoals verwachtFor Class-based DSC resources, Import-DscResource -ModuleVersion may not work as expected

Als de compilatie-knooppunt meerdere versies van een module DSC-resource op basis van een klasse heeft Import-DscResource -ModuleVersion heeft niet de opgegeven versie kiezen en resulteert in de volgende fout bij schemacompilatie.If the compilation node has multiple version 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

Oplossing: De vereiste versie importeren door te definiëren de ModuleSpecification object toe aan de -ModuleName met RequiredVersion sleutel die is opgegeven als volgt:Resolution: Import the required version by defining the ModuleSpecification object to the -ModuleName with RequiredVersion key specified as follows:

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

Sommige DSC-resources, zoals registerresource kunnen beginnen met een lang duren om de aanvraag te verwerken.Some DSC resources like registry resource may start to take a long time to process the request.

Resolution1: Een geplande taak periodiek opschonen van de volgende map maken.Resolution1: Create a schedule task that cleans up the following folder periodically.

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

Resolution2: Wijzigen van de DSC-configuratie voor het opschonen van de CommandAnalysis map aan het einde van de configuratie.Resolution2: 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'
    }
}