Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.