Foutopsporing van DSC-resourcesDebugging DSC resources

Van toepassing op: Windows PowerShell 5.0Applies To: Windows PowerShell 5.0

In PowerShell 5.0 is een nieuwe functie geïntroduceerd in de gewenste status configuratie (DSC) waarmee u fouten opsporen in een DSC-resource als een configuratie wordt toegepast.In PowerShell 5.0, a new feature was introduced in Desired State Configuraiton (DSC) that allows you to debug a DSC resource as a configuration is being applied.

DSC-foutopsporing inschakelenEnabling DSC debugging

Voordat u fouten in een resource opsporen kunt, u moet inschakelen door het aanroepen van foutopsporing de inschakelen DscDebug cmdlet.Before you can debug a resource, you have to enable debugging by calling the Enable-DscDebug cmdlet. Deze cmdlet wordt een verplichte parameter BreakAll.This cmdlet takes a mandatory parameter, BreakAll.

U kunt controleren of foutopsporing is ingeschakeld door te kijken naar het resultaat van een aanroep naar Get-DscLocalConfigurationManager.You can verify that debugging has been enabled by looking at the result of a call to Get-DscLocalConfigurationManager.

De volgende PowerShell-uitvoer geeft het resultaat van de foutopsporing inschakelen:The following PowerShell output shows the result of enabling debugging:

PS C:\DebugTest> $LCM = Get-DscLocalConfigurationManager

PS C:\DebugTest> $LCM.DebugMode
NONE

PS C:\DebugTest> Enable-DscDebug -BreakAll

PS C:\DebugTest> $LCM = Get-DscLocalConfigurationManager

PS C:\DebugTest> $LCM.DebugMode
ForceModuleImport
ResourceScriptBreakAll

PS C:\DebugTest>

Starten van een configuratie met foutopsporing is ingeschakeldStarting a configuration with debug enabled

Voor foutopsporing DSC-resource, start u een configuratie die die resource aanroept.To debug a DSC resource, you start a configuration that calls that resource. Bijvoorbeeld, zullen we een eenvoudige configuratie die roept de WindowsFeature resource om ervoor te zorgen dat de functie 'WindowsPowerShellWebAccess' is geïnstalleerd:For this example, we'll look at a simple configuration that calls the WindowsFeature resource to ensure that the "WindowsPowerShellWebAccess" feature is installed:

Configuration PSWebAccess
    {
    Import-DscResource -ModuleName 'PsDesiredStateConfiguration'
    Node localhost
        {
        WindowsFeature PSWA
            {
            Name = 'WindowsPowerShellWebAccess'
            Ensure = 'Present'
            }
        }
    }
PSWebAccess

Na het compileren van de configuratie, start u deze door aan te roepen Start DscConfiguration.After compiling the configuration, start it by calling Start-DscConfiguration. De configuratie wordt niet meer wanneer de lokale Configuration Manager (LCM) in de eerste resource in de configuratie aanroepen.The configuration will stop when the Local Configuration Manager (LCM) calls into the first resource in the configuration. Als u de -Verbose en -Wait parameters, de uitvoer geeft aan de regels die u invoeren moet om foutopsporing starten.If you use the -Verbose and -Wait parameters, the output displays the lines you need to enter to start debugging.

Start-DscConfiguration .\PSWebAccess -Wait -Verbose
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfiguration
Manager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer TEST-SRV with user sid S-1-5-21-2127521184-1604012920-1887927527-108583.
VERBOSE: An LCM method call arrived from computer TEST-SRV with user sid S-1-5-21-2127521184-1604012920-1887927527-108583.
VERBOSE: [TEST-SRV]: LCM:  [ Start  Set      ]
WARNING: [TEST-SRV]:                            [DSCEngine] Warning LCM is in Debug 'ResourceScriptBreakAll' mode.  Resource script processing will 
be stopped to wait for PowerShell script debugger to attach.
VERBOSE: [TEST-SRV]:                            [DSCEngine] Importing the module C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateCo
nfiguration\DscResources\MSFT_RoleResource\MSFT_RoleResource.psm1 in force mode.
VERBOSE: [TEST-SRV]: LCM:  [ Start  Resource ]  [[WindowsFeature]PSWA]
VERBOSE: [TEST-SRV]: LCM:  [ Start  Test     ]  [[WindowsFeature]PSWA]
VERBOSE: [TEST-SRV]:                            [[WindowsFeature]PSWA] Importing the module MSFT_RoleResource in force mode.
WARNING: [TEST-SRV]:                            [[WindowsFeature]PSWA] Resource is waiting for PowerShell script debugger to attach. 
Use the following commands to begin debugging this resource script:
Enter-PSSession -ComputerName TEST-SRV -Credential <credentials>
Enter-PSHostProcess -Id 9000 -AppDomainName DscPsPluginWkr_AppDomain
Debug-Runspace -Id 9

De LCM heeft op dit moment de resource genoemd en keert u naar het eerste break-punt.At this point, the LCM has called the resource, and come to the first break point. De laatste drie regels in de uitvoer laten zien hoe koppelen aan het proces en foutopsporing in de resource-scripts te starten.The last three lines in the output show you how to attach to the process and start debugging the resource script.

Foutopsporing in de resource-scriptsDebugging the resource script

Start een nieuw exemplaar van de PowerShell ISE.Start a new instance of the PowerShell ISE. Voer in het consolevenster de laatste drie regels van uitvoer van de Start-DscConfiguration uitvoer als opdrachten, vervangen <credentials> met geldige gebruikersreferenties.In the console pane, enter the last three lines of output from the Start-DscConfiguration output as commands, replacing <credentials> with valid user credentials. U ziet nu een prompt die er ongeveer als volgt:You should now see a prompt that looks similar to:

[TEST-SRV]: [DBG]: [Process:9000]: [RemoteHost]: PS C:\DebugTest>>

Het script resource wordt geopend in het scriptvenster en het foutopsporingsprogramma stopt op de eerste regel van de Test TargetResource functie (de Test() methode van een bron op basis van een klasse).The resource script will open in the script pane, and the debugger is stopped at the first line of the Test-TargetResource function (the Test() method of a class-based resource). Nu kunt u de opdrachten voor foutopsporing in de ISE om het script resource te doorlopen, bekijk de waarden van variabelen, de aanroepstack, enzovoort.Now you can use the debug commands in the ISE to step through the resource script, look at variable values, view the call stack, and so on. Zie voor meer informatie over foutopsporing in de PowerShell ISE hoe fouten opsporen in Scripts in Windows PowerShell ISE.For information about debugging in the PowerShell ISE, see How to Debug Scripts in Windows PowerShell ISE. Houd er rekening mee dat elke regel in het resource-script (of de klasse) is ingesteld als een break-punt.Remember that every line in the resource script (or class) is set as a break point.

DSC-foutopsporing uit te schakelenDisabling DSC debugging

Na het aanroepen inschakelen DscDebug, alle aanroepen voor Start DscConfiguration leidt ertoe dat de configuratie in het foutopsporingsprogramma te splitsen.After calling Enable-DscDebug, all calls to Start-DscConfiguration will result in the configuration breaking into the debugger. Om toe te staan configuraties normaal uitgevoerd, moet u uitschakelen door het aanroepen van foutopsporing de uitschakelen DscDebug cmdlet.To allow configurations to run normally, you must disable debugging by calling the Disable-DscDebug cmdlet.

Opmerking: Rebooting verandert de status van de foutopsporing van de LCM niet.Note: Rebooting does not change the debug state of the LCM. Als foutopsporing is ingeschakeld, wordt het starten van een configuratie nog steeds onderbreken met foutopsporing na opnieuw opstarten.If debugging is enabled, starting a configuration will still break into the debugger after a reboot.

Zie ookSee Also