Delen via


Foutopsporing voor DSC-resources

Van toepassing op: Windows PowerShell 5.0

In PowerShell 5.0 is een nieuwe functie geïntroduceerd in Desired State Configuration (DSC) waarmee u fouten in een DSC-resource kunt opsporen wanneer een configuratie wordt toegepast.

DSC-foutopsporing inschakelen

Voordat u fouten in een resource kunt opsporen, moet u foutopsporing inschakelen door de cmdlet Enable-DscDebug aan te roepen. Deze cmdlet gebruikt een verplichte parameter, BreakAll.

U kunt controleren of foutopsporing is ingeschakeld door te kijken naar het resultaat van een aanroep naar Get-DscLocalConfigurationManager.

De volgende PowerShell-uitvoer toont het resultaat van het inschakelen van foutopsporing:

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>

Een configuratie starten met foutopsporing ingeschakeld

Als u fouten wilt opsporen in een DSC-resource, start u een configuratie die die resource aanroept. In dit voorbeeld kijken we naar een eenvoudige configuratie die de resource WindowsFeature aanroept om ervoor te zorgen dat de functie 'WindowsPowerShellWebAccess' is geïnstalleerd:

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

Nadat u de configuratie hebt ge compileerd, start u deze door Start-DscConfiguration aan te roepen. De configuratie stopt wanneer LCM (Local Configuration Manager) de eerste resource in de configuratie aanroept. Als u de -Verbose parameters en -Wait gebruikt, worden in de uitvoer de regels weergegeven die u moet invoeren om foutopsporing te starten.

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

Op dit punt heeft de LCM de resource aangeroepen en is het eerste onderbrekingspunt. De laatste drie regels in de uitvoer laten zien hoe u het proces koppelt en begint met het opsporen van fouten in het resourcescript.

Foutopsporing in het resourcescript

Start een nieuw exemplaar van de PowerShell ISE. Voer in het consolevenster de laatste drie regels uitvoer van de Start-DscConfiguration uitvoer in als opdrachten, waarbij <credentials> u vervangt door geldige gebruikersreferenties. U ziet nu een prompt die er ongeveer als volgt uitziet:

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

Het resourcescript wordt geopend in het scriptvenster en het foutopsporingsprogramma wordt gestopt op de eerste regel van de functie Test-TargetResource (de methode Test() van een resource op basis van een klasse). U kunt nu de foutopsporingsopdrachten in de ISE gebruiken om het resourcescript te doorlopen, variabele waarden te bekijken, de aanroepstack weer te geven, enzovoort. Houd er rekening mee dat elke regel in het resourcescript (of de klasse) is ingesteld als een onderbrekingspunt.

DSC-foutopsporing uitschakelen

Na het aanroepen van Enable-DscDebug, leiden alle aanroepen naar Start-DscConfiguration ertoe dat de configuratie in het foutopsporingsprogramma wordt verbroken. Als u wilt toestaan dat configuraties normaal worden uitgevoerd, moet u foutopsporing uitschakelen door de cmdlet Disable-DscDebug aan te roepen.

Notitie

Als u opnieuw opstart, wordt de foutopsporingsstatus van de LCM niet gewijzigd. Als foutopsporing is ingeschakeld, wordt het starten van een configuratie na het opnieuw opstarten nog steeds ingebroken in het foutopsporingsprogramma.

Zie ook