Dela via


Felsöka DSC-resurser

Gäller för: Windows PowerShell 5.0

I PowerShell 5.0 introducerades en ny funktion i Desired State Configuration (DSC) som gör att du kan felsöka en DSC-resurs när en konfiguration tillämpas.

Aktivera DSC-felsökning

Innan du kan felsöka en resurs måste du aktivera felsökning genom att anropa cmdleten Enable-DscDebug . Den här cmdleten tar en obligatorisk parameter, BreakAll.

Du kan kontrollera att felsökning har aktiverats genom att titta på resultatet av ett anrop till Get-DscLocalConfigurationManager.

Följande PowerShell-utdata visar resultatet av aktivering av felsökning:

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>

Starta en konfiguration med felsökning aktiverat

Om du vill felsöka en DSC-resurs startar du en konfiguration som anropar den resursen. I det här exemplet tittar vi på en enkel konfiguration som anropar WindowsFeature-resursen för att säkerställa att funktionen "WindowsPowerShellWebAccess" är installerad:

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

När konfigurationen har kompilerats startar du den genom att anropa Start-DscConfiguration. Konfigurationen stoppas när LCM (Local Configuration Manager) anropar den första resursen i konfigurationen. Om du använder parametrarna -Verbose och -Wait visar utdata de rader som du behöver ange för att starta felsökningen.

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

Nu har LCM anropat resursen och kommit till den första brytpunkten. De tre sista raderna i utdata visar hur du ansluter till processen och börjar felsöka resursskriptet.

Felsöka resursskriptet

Starta en ny instans av PowerShell ISE. I konsolfönstret anger du de tre sista raderna med utdata från Start-DscConfiguration utdata som kommandon och ersätter <credentials> med giltiga användarautentiseringsuppgifter. Nu bör du se en uppmaning som ser ut ungefär så här:

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

Resursskriptet öppnas i skriptfönstret och felsökningsprogrammet stoppas på den första raden i funktionen Test-TargetResource (metoden Test() för en klassbaserad resurs). Nu kan du använda felsökningskommandona i ISE för att gå igenom resursskriptet, titta på variabelvärden, visa anropsstacken och så vidare. Kom ihåg att varje rad i resursskriptet (eller klassen) anges som brytpunkt.

Inaktivera DSC-felsökning

När du har anropat Enable-DscDebug leder alla anrop till Start-DscConfiguration till att konfigurationen bryter sig in i felsökningsprogrammet. Om du vill tillåta att konfigurationer körs normalt måste du inaktivera felsökning genom att anropa cmdleten Disable-DscDebug .

Anteckning

Omstarten ändrar inte felsökningstillståndet för LCM. Om felsökning är aktiverat bryts aktiveringen av en konfiguration fortfarande i felsökaren efter en omstart.

Se även