Sdílet prostřednictvím


Ladění prostředků DSC

Platí pro: Windows PowerShell 5.0

V PowerShellu 5.0 se v Desired State Configuration (DSC) zavedla nová funkce, která umožňuje ladit prostředek DSC při použití konfigurace.

Povolení ladění DSC

Před laděním prostředku musíte povolit ladění voláním rutiny Enable-DscDebug . Tato rutina přebírá povinný parametr BreakAll.

Pokud chcete ověřit, jestli je ladění povolené, podívejte se na výsledek volání Get-DscLocalConfigurationManager.

Následující výstup PowerShellu ukazuje výsledek povolení ladění:

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>

Spuštění konfigurace s povoleným laděním

Pokud chcete ladit prostředek DSC, spustíte konfiguraci, která tento prostředek volá. V tomto příkladu se podíváme na jednoduchou konfiguraci, která volá prostředek WindowsFeature, abychom zajistili , že je nainstalovaná funkce WindowsPowerShellWebAccess:

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

Po kompilaci konfigurace ji spusťte voláním Start-DscConfiguration. Konfigurace se zastaví, když místní Configuration Manager (LCM) zavolá první prostředek v konfiguraci. Pokud použijete -Verbose parametry a -Wait , zobrazí se ve výstupu řádky, které je potřeba zadat, abyste mohli spustit ladění.

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

V tomto okamžiku LCM zavolal prostředek a dospěl k prvnímu bodu zarážky. Poslední tři řádky ve výstupu ukazují, jak se připojit k procesu a spustit ladění skriptu prostředku.

Ladění skriptu prostředků

Spusťte novou instanci prostředí PowerShell ISE. V podokně konzoly zadejte poslední tři řádky výstupu z výstupu Start-DscConfiguration jako příkazy a nahraďte <credentials> platnými přihlašovacími údaji uživatele. Teď by se měla zobrazit výzva, která vypadá nějak takto:

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

Skript prostředku se otevře v podokně skriptů a ladicí program se zastaví na prvním řádku funkce Test-TargetResource (metoda Test() prostředku založeného na třídě. Teď můžete pomocí ladicích příkazů v ISE procházet skript prostředků, podívat se na hodnoty proměnných, zobrazit zásobník volání atd. Mějte na paměti, že každý řádek ve skriptu prostředku (nebo třídě) je nastavený jako bod zarážky.

Zakázání ladění DSC

Po volání Enable-DscDebug všechna volání Start-DscConfiguration způsobí, že konfigurace prolomí ladicí program. Pokud chcete povolit normální spouštění konfigurací, je nutné zakázat ladění voláním rutiny Disable-DscDebug .

Poznámka

Restartování nezmění stav ladění LCM. Pokud je ladění povolené, spuštění konfigurace se i po restartování prolomí do ladicího programu.

Viz také