Řešení potíží s DSC

Platí pro: Windows PowerShell 4.0, Windows PowerShell 5.1

Tento článek obsahuje pokyny k řešení běžných chyb.

Závislost WinRM

Windows PowerShell Desired State Configuration (DSC) závisí na WinRM. Ve Windows Serveru 2008 R2 a Windows 7 není winRM ve výchozím nastavení povolený. Spuštěním příkazu Set-WSManQuickConfigv Windows PowerShell relaci se zvýšenými oprávněními povolte WinRM.

Použití Get-DscConfigurationStatus

Rutina Get-DscConfigurationStatus získá informace o stavu konfigurace z cílového uzlu. Příkaz vrátí bohatý objekt, který obsahuje základní informace o tom, jestli bylo spuštění konfigurace úspěšné nebo ne. Můžete prozkoumat objekt a zjistit podrobnosti o spuštění konfigurace, například:

  • Každý prostředek, který selhal.
  • Všechny prostředky, které požadovaly restartování.
  • Meta-Configuration nastavení v době spuštění konfigurace.

Následující sada parametrů vrátí informace o stavu pro poslední spuštění konfigurace:

Get-DscConfigurationStatus [-CimSession <CimSession[]>]
                           [-ThrottleLimit <int>]
                           [-AsJob]
                           [<CommonParameters>]

Následující sada parametrů vrátí informace o stavu pro každé spuštění konfigurace:

Get-DscConfigurationStatus -All
                           [-CimSession <CimSession[]>]
                           [-ThrottleLimit <int>]
                           [-AsJob]
                           [<CommonParameters>]

Příklad

PS C:\> $Status = Get-DscConfigurationStatus

PS C:\> $Status

Status         StartDate                Type            Mode    RebootRequested        NumberOfResources
------        ---------                ----            ----    ---------------        -----------------
Failure        11/24/2015  3:44:56     Consistency        Push    True                36

PS C:\> $Status.ResourcesNotInDesiredState

ConfigurationName     :    MyService
DependsOn             :
ModuleName            :    PSDesiredStateConfiguration
ModuleVersion         :    1.1
PsDscRunAsCredential  :
ResourceID            :    [File]ServiceDll
SourceInfo            :    c:\git\CustomerService\Configs\MyCustomService.ps1::5::34::File
DurationInSeconds     :    0.19
Error                 :    SourcePath must be accessible for current configuration. The related file/directory is:
                           \\Server93\Shared\contosoApp.dll. The related ResourceID is [File]ServiceDll
FinalState            :
InDesiredState        :    False
InitialState          :
InstanceName          :    ServiceDll
RebootRequested       :    False
ResourceName          :    File
StartDate             :    11/24/2015  3:44:56
PSComputerName        :

Skript se nespustí: Diagnostika chyb skriptu pomocí protokolů DSC

Stejně jako veškerý software Windows zaznamenává DSC chyby a události v protokolech, které jsou k dispozici ke kontrole v Prohlížeč událostí. Prozkoumání těchto protokolů vám pomůže pochopit, proč konkrétní operace selhala a jak zabránit selhání v budoucnu. Pokud chcete při vytváření usnadnit sledování chyb, použijte prostředek protokolu DSC ke sledování průběhu konfigurace v protokolu analytických událostí DSC.

Kde jsou protokoly událostí DSC?

V Prohlížeč událostí se události DSC nacházejí v části Protokoly aplikací a služeb/Microsoft/Windows/Desired State Configuration

Protokoly událostí můžete zobrazit spuštěním odpovídající rutiny PowerShellu Get-WinEvent:

PS C:\> Get-WinEvent -LogName "Microsoft-Windows-Dsc/Operational"

   ProviderName: Microsoft-Windows-DSC

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
11/17/2014 10:27:23 PM        4102 Information      Job {02C38626-D95A-47F1-9DA2-C1D44A7128E7} :

Primární název protokolu DSC je Microsoft-Windows-DSC>> (jiné názvy protokolů v systému Windows se tady kvůli stručnosti nezobrazují). Primární název se připojí k názvu kanálu, aby se vytvořil úplný název protokolu.

Modul DSC zapisuje hlavně do tří typů protokolů: provozní, analytické a ladicí protokoly. Vzhledem k tomu, že analytické a ladicí protokoly nejsou ve výchozím nastavení povolené, měli byste je povolit v Prohlížeč událostí. Použijte následující postup:

  1. Otevřete Prohlížeč událostí pomocí:

    • Show-EventLog Psaní v Windows PowerShell
    • Vyberte tlačítko Start, pak Ovládací panely, nástroje pro správu a pak Prohlížeč událostí.
  2. V nabídce Zobrazit v Prohlížeči událostí vyberte Zobrazit analytické a ladicí protokoly.

    Název protokolu pro analytický kanál je Microsoft-Windows-Dsc/Analytica kanál ladění je Microsoft-Windows-Dsc/Debug.

Protokoly můžete povolit také pomocí nástroje wevtutil , jak je znázorněno v následujícím příkladu.

wevtutil.exe set-log "Microsoft-Windows-Dsc/Analytic" /q:true /e:true

Nebo pomocí PowerShellu a .NET povolte protokoly, jak je znázorněno v následujícím příkladu:

$logName = 'Microsoft-Windows-Dsc/Analytic'
$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration $logName
$log.IsEnabled = $true
$log.SaveChanges()

Co obsahují protokoly DSC?

DSC protokoluje tři různé kanály protokolů na základě důležitosti zprávy. Provozní protokol v DSC obsahuje všechny chybové zprávy a je užitečný pro identifikaci problému. Analytický protokol má větší objem událostí a dokáže identifikovat, kde došlo k chybám. Tento kanál obsahuje také všechny vygenerované podrobné zprávy. Protokol ladění obsahuje protokoly, které vám můžou pomoct pochopit, jak k chybám došlo. Zprávy událostí DSC začínají ID úlohy, které jedinečně představuje operaci DSC. Následující příklad se pokusí získat zprávu z první události přihlášené do provozního protokolu DSC.

PS C:\> $AllDscOpEvents = Get-WinEvent -LogName "Microsoft-Windows-Dsc/Operational"
PS C:\> $FirstOperationalEvent = $AllDscOpEvents[0]
PS C:\> $FirstOperationalEvent.Message
Job {02C38626-D95A-47F1-9DA2-C1D44A7128E7} :
Consistency engine was run successfully.

DSC protokoluje události se strukturou, která uživateli umožňuje shromažďovat události z jedné úlohy DSC. Struktura je následující:

Job ID : <Guid>
<Event Message>

Shromažďování událostí z jedné operace DSC

Protokoly událostí DSC obsahují události generované různými operacemi DSC. Obvykle se ale zajímáte o podrobnosti konkrétní operace. Všechny protokoly DSC je možné seskupit podle vlastnosti ID úlohy, která je jedinečná pro každou operaci DSC. ID úlohy se zobrazí jako první hodnota vlastnosti ve všech událostech DSC. Následující kroky vysvětlují, jak shromáždit všechny události ve seskupené maticové struktuře.

<##########################################################################
 Step 1 : Enable analytic and debug DSC channels (Operational channel is enabled by default)
###########################################################################>

wevtutil.exe set-log "Microsoft-Windows-Dsc/Analytic" /q:true /e:true
wevtutil.exe set-log "Microsoft-Windows-Dsc/Debug" /q:True /e:true

<##########################################################################
 Step 2 : Perform the required DSC operation (Below is an example, you could run any DSC operation instead)
###########################################################################>

Get-DscLocalConfigurationManager

<##########################################################################
Step 3 : Collect all DSC Logs, from the Analytic, Debug and Operational channels
###########################################################################>

$DscEvents=[System.Array](Get-WinEvent "Microsoft-Windows-Dsc/Operational") `
         + [System.Array](Get-WinEvent "Microsoft-Windows-Dsc/Analytic" -Oldest) `
         + [System.Array](Get-WinEvent "Microsoft-Windows-Dsc/Debug" -Oldest)


<##########################################################################
 Step 4 : Group all logs based on the job ID
###########################################################################>
$SeparateDscOperations = $DscEvents | Group {$_.Properties[0].value}

Proměnná $SeparateDscOperations zde zahrnuje protokoly seskupené podle ID úloh. Každý prvek pole této proměnné představuje skupinu událostí protokolovaných jinou operací DSC, což umožňuje přístup k dalším informacím o protokolech.

PS C:\> $SeparateDscOperations

Count Name                      Group
----- ----                      -----
   48 {1A776B6A-5BAC-11E3-BF... {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics....
   40 {E557E999-5BA8-11E3-BF... {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics....

PS C:\> $SeparateDscOperations[0].Group

   ProviderName: Microsoft-Windows-DSC

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
12/2/2013 3:47:29 PM          4115 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4198 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4114 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4102 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4098 Warning          Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4098 Warning          Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4176 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...
12/2/2013 3:47:29 PM          4182 Information      Job {1A776B6A-5BAC-11E3-BF41-00155D553612} : ...

Data v proměnné $SeparateDscOperations můžete extrahovat pomocí Where-Object. Následuje pět scénářů, ve kterých můžete chtít extrahovat data pro řešení potíží s DSC:

1: Selhání operací

Všechny události mají úrovně závažnosti. Tyto informace jsou užitečné pro identifikaci chybových událostí:

PS C:\> $SeparateDscOperations | Where-Object {$_.Group.LevelDisplayName -contains "Error"}

Count Name                      Group
----- ----                      -----
   38 {5BCA8BE7-5BB6-11E3-BF... {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics....

2: Podrobnosti o operacích spuštěných za poslední půlhodinu

TimeCreated, vlastnost každé události systému Windows udává čas vytvoření události. Porovnání této vlastnosti s konkrétním objektem data a času je užitečné pro filtrování všech událostí:

PS C:\> $DateLatest = (Get-Date).AddMinutes(-30)
PS C:\> $SeparateDscOperations | Where-Object {$_.Group.TimeCreated -gt $DateLatest}

Count Name                      Group
----- ----                      -----
    1 {6CEC5B09-5BB0-11E3-BF... {System.Diagnostics.Eventing.Reader.EventLogRecord}

3: Zprávy z nejnovější operace

Poslední operace je uložena v prvním indexu skupiny $SeparateDscOperationspolí . Dotazování zpráv skupiny na index 0 vrátí všechny zprávy pro nejnovější operaci:

PS C:\> $SeparateDscOperations[0].Group.Message
Job {5BCA8BE7-5BB6-11E3-BF41-00155D553612} :
Running consistency engine.
Job {1A776B6A-5BAC-11E3-BF41-00155D553612} :
Configuration is sent from computer NULL by user sid S-1-5-18.
Job {1A776B6A-5BAC-11E3-BF41-00155D553612} :
Displaying messages from built-in DSC resources:
 WMI channel 1
 ResourceID:
 Message : [INCH-VM]:                            [] Starting consistency engine.
Job {1A776B6A-5BAC-11E3-BF41-00155D553612} :
Displaying messages from built-in DSC resources:
 WMI channel 1
 ResourceID:
 Message : [INCH-VM]:                            [] Consistency check completed.

4: Chybové zprávy protokolované pro nedávné neúspěšné operace

$SeparateDscOperations[0].Group obsahuje sadu událostí pro nejnovější operaci. Spuštěním rutiny vyfiltrujte Where-Object události na základě zobrazovaný název jejich úrovně. Výsledky jsou uloženy v $myFailedEvent proměnné, kterou je možné dále členit, aby se zobrazila zpráva o události:

PS C:\> $myFailedEvent = ($SeparateDscOperations[0].Group |
    Where-Object {$_.LevelDisplayName -eq "Error"})

PS C:\> $myFailedEvent.Message

Job {5BCA8BE7-5BB6-11E3-BF41-00155D553612} :
DSC Engine Error :
 Error Message Current configuration does not exist. Execute Start-DscConfiguration command with
 -Path parameter to specify a configuration file and create a current configuration first.
Error Code : 1

5: Všechny události vygenerované pro konkrétní ID úlohy.

$SeparateDscOperations je pole skupin, z nichž každá má název jako jedinečné ID úlohy. Spuštěním rutiny Where-Object můžete extrahovat skupiny událostí, které mají konkrétní ID úlohy:

PS C:\> ($SeparateDscOperations | Where-Object {$_.Name -eq $jobX} ).Group

   ProviderName: Microsoft-Windows-DSC

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
12/2/2013 4:33:24 PM          4102 Information      Job {847A5619-5BB2-11E3-BF41-00155D553612} : ...
12/2/2013 4:33:24 PM          4168 Information      Job {847A5619-5BB2-11E3-BF41-00155D553612} : ...
12/2/2013 4:33:24 PM          4146 Information      Job {847A5619-5BB2-11E3-BF41-00155D553612} : ...
12/2/2013 4:33:24 PM          4120 Information      Job {847A5619-5BB2-11E3-BF41-00155D553612} : ...

Analýza protokolů DSC pomocí nástroje xDscDiagnostics

xDscDiagnostics je modul PowerShellu, který se skládá z několika funkcí, které můžou pomoct analyzovat selhání DSC na vašem počítači. Tyto funkce vám můžou pomoct identifikovat všechny místní události z minulých operací DSC nebo události DSC na vzdálených počítačích. Termín operace DSC zde definuje jedno jedinečné spuštění DSC od jeho začátku do konce. Například Test-DscConfiguration by to byla samostatná operace DSC. Podobně jsou všechny ostatní rutiny v DSC, například Get-DscConfiguration a Start-DscConfiguration, identifikovatelné jako samostatné operace DSC. Další informace o diagnostických funkcích najdete v tématu xDscDiagnostics.

Získání podrobností o operacích DSC

Funkce Get-xDscOperation umožňuje najít výsledky operací DSC, které běží na jednom nebo více počítačích. Funkce vrátí objekt, který obsahuje kolekci událostí vytvořených jednotlivými operacemi DSC. Například v následujícím výstupu byly spuštěny tři příkazy. První z nich prošel a další dva selhaly. Výstup obsahuje Get-xDscOperation souhrn těchto výsledků.

PS C:\DiagnosticsTest> Get-xDscOperation
ComputerName   SequenceId TimeCreated           Result   JobID                                 AllEvents
------------   ---------- -----------           ------   -----                                 ---------
SRV1   1          6/23/2016 9:37:52 AM  Failure  9701aadf-395e-11e6-9165-00155d390509  {@{Message=; TimeC...
SRV1   2          6/23/2016 9:36:54 AM  Failure  7e8e2d6e-395c-11e6-9165-00155d390509  {@{Message=; TimeC...
SRV1   3          6/23/2016 9:36:54 AM  Success  af72c6aa-3960-11e6-9165-00155d390509  {@{Message=Operati...

Zadáním parametru Nejnovější můžete získat výsledky jenom pro nejnovější operace:

PS C:\DiagnosticsTest> Get-xDscOperation -Newest 5
ComputerName   SequenceId TimeCreated           Result   JobID                                 AllEvents
------------   ---------- -----------           ------   -----                                 ---------
SRV1   1          6/23/2016 4:36:54 PM  Success                                        {@{Message=; TimeC...
SRV1   2          6/23/2016 4:36:54 PM  Success  5c06402b-399b-11e6-9165-00155d390509  {@{Message=Operati...
SRV1   3          6/23/2016 4:36:54 PM  Success                                        {@{Message=; TimeC...
SRV1   4          6/23/2016 4:36:54 PM  Success  5c06402a-399b-11e6-9165-00155d390509  {@{Message=Operati...
SRV1   5          6/23/2016 4:36:51 PM  Success                                        {@{Message=; TimeC...

Získání podrobností o událostech DSC

Rutina Trace-xDscOperation vrátí objekt obsahující kolekci událostí, jejich typů událostí a výstup zprávy vygenerovaný z konkrétní operace DSC. Když zjistíte selhání v některé z operací pomocí Get-xDscOperationnástroje , obvykle byste trasování této operace našli události, které způsobily selhání.

Pomocí parametru SequenceID získejte události pro konkrétní operaci pro konkrétní počítač. Pokud například zadáte SequenceID hodnotu 9, Trace-xDscOperation získejte trasování pro operaci DSC, která byla 9. od poslední operace:

PS C:\DiagnosticsTest> Trace-xDscOperation -SequenceID 9
ComputerName   EventType    TimeCreated           Message
------------   ---------    -----------           -------
SRV1   OPERATIONAL  6/24/2016 10:51:52 AM Operation Consistency Check or Pull started by user sid S-1-5-20 from computer NULL.
SRV1   OPERATIONAL  6/24/2016 10:51:52 AM Running consistency engine.
SRV1   OPERATIONAL  6/24/2016 10:51:52 AM The local configuration manager is updating the PSModulePath to WindowsPowerShell\Modules;C:\Prog...
SRV1   OPERATIONAL  6/24/2016 10:51:53 AM  Resource execution sequence :: [WindowsFeature]DSCServiceFeature, [xDSCWebService]PSDSCPullServer.
SRV1   OPERATIONAL  6/24/2016 10:51:54 AM Consistency engine was run successfully.
SRV1   OPERATIONAL  6/24/2016 10:51:54 AM Job runs under the following LCM setting. ...
SRV1   OPERATIONAL  6/24/2016 10:51:54 AM Operation Consistency Check or Pull completed successfully.

Předejte identifikátor GUID přiřazený ke konkrétní operaci DSC (vrácený rutinou Get-xDscOperation ), abyste získali podrobnosti o události pro danou operaci DSC:

PS C:\DiagnosticsTest> Trace-xDscOperation -JobID 9e0bfb6b-3a3a-11e6-9165-00155d390509

ComputerName   EventType    TimeCreated           Message
------------   ---------    -----------           -------
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM Operation Consistency Check or Pull started by user sid S-1-5-20 from computer NULL.
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCache.mof
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM Running consistency engine.
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [] Starting consistency engine.
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Applying configuration from C:\Windows\System32\Configuration\Current.mof.
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Parsing the configuration to apply.
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM  Resource execution sequence :: [WindowsFeature]DSCServiceFeature, [xDSCWebService]PSDSCPullServer.
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ Start  Resource ]  [[WindowsFeature]DSCServiceFeature]
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Executing operations for PS DSC resource MSFT_RoleResource with resource name [WindowsFeature]DSC...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ Start  Test     ]  [[WindowsFeature]DSCServiceFeature]
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[WindowsFeature]DSCServiceFeature] The operation 'Get...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[WindowsFeature]DSCServiceFeature] The operation 'Get...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ End    Test     ]  [[WindowsFeature]DSCServiceFeature] True in 0.3130 sec...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ End    Resource ]  [[WindowsFeature]DSCServiceFeature]
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ Start  Resource ]  [[xDSCWebService]PSDSCPullServer]
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Executing operations for PS DSC resource MSFT_xDSCWebService with resource name [xDSCWebService]P...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ Start  Test     ]  [[xDSCWebService]PSDSCPullServer]
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[xDSCWebService]PSDSCPullServer] Check Ensure
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[xDSCWebService]PSDSCPullServer] Check Port
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[xDSCWebService]PSDSCPullServer] Check Physical Path ...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[xDSCWebService]PSDSCPullServer] Check State
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [[xDSCWebService]PSDSCPullServer] Get Full Path for We...
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ End    Test     ]  [[xDSCWebService]PSDSCPullServer] True in 0.0160 seconds.
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]: LCM:  [ End    Resource ]  [[xDSCWebService]PSDSCPullServer]
SRV1   VERBOSE      6/24/2016 11:36:56 AM [SRV1]:                            [] Consistency check completed.
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCache.mof
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM Consistency engine was run successfully.
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM Job runs under the following LCM setting. ...
SRV1   OPERATIONAL  6/24/2016 11:36:56 AM Operation Consistency Check or Pull completed successfully.
SRV1   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCache.mof

Všimněte si, že vzhledem k tomu Trace-xDscOperation , že agreguje události z analytických, ladicích a provozních protokolů, zobrazí se výzva k povolení těchto protokolů.

Případně můžete shromažďovat informace o událostech uložením výstupu do Trace-xDscOperation proměnné. K zobrazení všech událostí pro konkrétní operaci DSC můžete použít následující příkazy.

PS C:\DiagnosticsTest> $Trace = Trace-xDscOperation -SequenceID 4

PS C:\DiagnosticsTest> $Trace.Event

Zobrazí se stejné výsledky jako u rutiny Get-WinEvent , například v následujícím výstupu:

   ProviderName: Microsoft-Windows-DSC

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
6/23/2016 1:36:53 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 1:36:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 2:07:00 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 2:07:01 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 2:36:55 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 2:36:56 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 3:06:55 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 3:06:55 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 3:36:55 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 3:36:55 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 4:06:53 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 4:06:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 4:36:52 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 4:36:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 5:06:52 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 5:06:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 5:36:54 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 5:36:54 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 6:06:52 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 6:06:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 6:36:56 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 6:36:57 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 7:06:52 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 7:06:53 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 7:36:53 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.
6/23/2016 7:36:54 AM          4343 Information      The DscTimer has successfully run LCM method PerformRequiredConfigurationChecks with flag 5.
6/23/2016 8:06:54 AM          4312 Information      The DscTimer is running LCM method PerformRequiredConfigurationChecks with the flag set to 5.

V ideálním případě byste nejprve použili Get-xDscOperation seznam posledních několika spuštění konfigurace DSC na vašich počítačích. Potom můžete prozkoumat libovolnou operaci tak, že zadáte její ID sekvence nebo ID úlohy a Trace-xDscOperation zjistíte, co děláte na pozadí.

Získávání událostí pro vzdálený počítač

ComputerName Pomocí parametru rutiny Trace-xDscOperation získáte podrobnosti o události na vzdáleném počítači. Než to uděláte, musíte vytvořit pravidlo brány firewall, které povolí vzdálenou správu na vzdáleném počítači:

New-NetFirewallRule -Name "Service RemoteAdmin" -DisplayName "Remote" -Action Allow

Teď můžete tento počítač zadat ve volání metody Trace-xDscOperation:

Trace-xDscOperation -ComputerName SRV2 -Credential Get-Credential -SequenceID 5
ComputerName   EventType    TimeCreated           Message
------------   ---------    -----------           -------
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM Operation Consistency Check or Pull started by user sid S-1-5-20 f...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCach...
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM Running consistency engine.
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [] Starting consistency...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Applying configuration from C:\Windows\System32\Configuration\Curr...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Parsing the configuration to apply.
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM  Resource execution sequence :: [WindowsFeature]DSCServiceFeature,...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ Start  Resource ]  [[WindowsFeature]DSCSer...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Executing operations for PS DSC resource MSFT_RoleResource with re...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ Start  Test     ]  [[WindowsFeature]DSCSer...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[WindowsFeature]DSCSer...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[WindowsFeature]DSCSer...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ End    Test     ]  [[WindowsFeature]DSCSer...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ End    Resource ]  [[WindowsFeature]DSCSer...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ Start  Resource ]  [[xDSCWebService]PSDSCP...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Executing operations for PS DSC resource MSFT_xDSCWebService with ...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ Start  Test     ]  [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ End    Test     ]  [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]: LCM:  [ End    Resource ]  [[xDSCWebService]PSDSCP...
SRV2   VERBOSE      6/24/2016 11:36:56 AM [SRV2]:                            [] Consistency check co...
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCach...
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM Consistency engine was run successfully.
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM Job runs under the following LCM setting. ...
SRV2   OPERATIONAL  6/24/2016 11:36:56 AM Operation Consistency Check or Pull completed successfully.
SRV2   ANALYTIC     6/24/2016 11:36:56 AM Deleting file from C:\Windows\System32\Configuration\DSCEngineCach...

Moje prostředky se neaktualizuje: Jak resetovat mezipaměť

Modul DSC ukládá prostředky implementované jako modul PowerShellu do mezipaměti pro účely efektivity. To však může způsobit problémy při vytváření prostředku a jeho současném testování, protože DSC načítá verzi uloženou v mezipaměti, dokud se proces nerestartuje. Jediným způsobem, jak nastavit načítání DSC na novější verzi, je explicitně zabít proces hostující modul DSC.

Podobně platí, že když spustíte příkaz Start-DscConfiguration, po přidání a úpravě vlastního prostředku se změny nemusí spustit, dokud se počítač nerestartuje nebo dokud se počítač nerestartuje. Důvodem je to, že DSC běží v hostitelském procesu zprostředkovatele WMI (WmiPrvSE) a obvykle je spuštěno mnoho instancí WmiPrvSE najednou. Při restartování se hostitelský proces restartuje a vymaže mezipaměť.

Pokud chcete úspěšně recyklovat konfiguraci a vymazat mezipaměť bez restartování, musíte zastavit a restartovat hostitelský proces. To může být na základě jednotlivých instancí, kdy identifikujete proces, zastavíte ho a restartujete ho. Nebo můžete k opětovnému načtení prostředku PowerShell DSC použít DebugMode, jak je znázorněno níže.

Pokud chcete identifikovat proces, který je hostitelem modulu DSC, uveďte ID WmiPrvSEprocesu , který je hostitelem modulu DSC. Poté aktualizujte zprostředkovatele, zastavte WmiPrvSE proces pomocí následujících příkazů a spusťte Start-DscConfiguration příkaz znovu.

###
### find the process that is hosting the DSC engine
###
$CimParameters = @{
    ClassName = 'Msft_Providers'
    Filter    = "provider='dsctimer' OR provider='dsccore'"
}
$dscProcessID = Get-CimInstance @CimParameters |
    Select-Object -ExpandProperty HostProcessIdentifier

###
### Stop the process
###
Get-Process -Id $dscProcessID | Stop-Process

Použití režimu ladění

Místní Configuration Manager DSC (LCM) můžete nakonfigurovat tak, aby při restartování hostitelského procesu vždy vymazal DebugMode mezipaměť. Pokud je nastavená hodnota $true, modul vždy znovu načte prostředek PowerShell DSC. Jakmile dokončíte zápis prostředku, můžete ho nastavit zpět na $false a modul se vrátí k chování modulů do mezipaměti.

Následuje ukázka automatické DebugMode aktualizace mezipaměti. Nejprve se podívejme na výchozí konfiguraci:

Get-DscLocalConfigurationManager
AllowModuleOverwrite           : False
CertificateID                  :
ConfigurationID                :
ConfigurationMode              : ApplyAndMonitor
ConfigurationModeFrequencyMins : 30
Credential                     :
DebugMode                      : {None}
DownloadManagerCustomData      :
DownloadManagerName            :
LocalConfigurationManagerState : Ready
RebootNodeIfNeeded             : False
RefreshFrequencyMins           : 15
RefreshMode                    : PUSH
PSComputerName                 :

Vidíte, že DebugMode je None.

K nastavení ukázky DebugMode použijte následující prostředek PowerShellu:

function Get-TargetResource {
    param (
        [Parameter(Mandatory)] $onlyProperty
    )

    $Path = "$env:SystemDrive\OutputFromTestProviderDebugMode.txt"

    return @{
        onlyProperty = Get-Content -Path $Path
    }
}
function Set-TargetResource {
    param (
        [Parameter(Mandatory)] $onlyProperty
    )

    "1" | Out-File -PSPath "$env:SystemDrive\OutputFromTestProviderDebugMode.txt"
}
function Test-TargetResource {
    param (
        [Parameter(Mandatory)]
        $onlyProperty
    )

    return $false
}

Teď vytvořte konfiguraci s názvem TestProviderDebugMode:

Configuration ConfigTestDebugMode
{
    Import-DscResource -Name TestProviderDebugMode
    Node localhost
    {
        TestProviderDebugMode test
        {
            onlyProperty = "blah"
        }
    }
}
ConfigTestDebugMode

Obsah souboru $env:SystemDrive\OutputFromTestProviderDebugMode.txt je 1.

Teď pomocí následujícího skriptu aktualizujte kód zprostředkovatele:

$newResourceOutput = Get-Random -Minimum 5 -Maximum 30
$OutputPath = "C:\Program Files\WindowsPowerShell\Modules\MyPowerShellModules\DSCResources\TestProviderDebugMode\TestProviderDebugMode.psm1"
$content = @"
function Get-TargetResource {
    param (
        [Parameter(Mandatory)] `$onlyProperty
    )

    `$Path = "$env:SystemDrive\OutputFromTestProviderDebugMode.txt"
    return @{
        onlyProperty = Get-Content -Path $Path
    }
}
function Set-TargetResource {
    param (
        [Parameter(Mandatory)] `$onlyProperty
    )

    "$newResourceOutput" | Out-File -PSPath C:\OutputFromTestProviderDebugMode.txt
}
function Test-TargetResource {
    param (
        [Parameter(Mandatory)] `$onlyProperty
    )

    return `$false
}
"@ | Out-File -FilePath $OutputPath

Tento skript vygeneruje náhodné číslo a aktualizuje kód zprostředkovatele. Pokud DebugMode je nastavená hodnota false, obsah souboru $env:SystemDrive\OutputFromTestProviderDebugMode.txt se nikdy nezmění.

Teď v konfiguračním skriptu nastavte DebugMode na ForceModuleImport :

LocalConfigurationManager
{
    DebugMode = "ForceModuleImport"
}

Když skript znovu spustíte, všimněte si, že obsah souboru se pokaždé liší. Můžete to zkontrolovat spuštěním příkazu Get-DscConfiguration . Následující fragment kódu ukazuje výsledek dalších dvou spuštění. Při spuštění skriptu se výsledky můžou lišit.

PS C:\> Get-DscConfiguration -CimSession (New-CimSession localhost)

onlyProperty                            PSComputerName
------------                            --------------
20                                      localhost

PS C:\> Get-DscConfiguration -CimSession (New-CimSession localhost)

onlyProperty                            PSComputerName
------------                            --------------
14                                      localhost

DSC při registraci na Serveru vyžádané replikace windows vrátí chybu "neočekávaný kód odpovědi InternalServerError"

Při použití metakonfigurace na server, který chcete zaregistrovat v instanci Windows Pull Server, se může zobrazit následující chyba.

Registration of the Dsc Agent with the server https://<serverfqdn>:8080/PSDSCPullServer.svc failed. The underlying error is: The attempt to register Dsc Agent with AgentId <ID> with the server
https://<serverfqdn>:8080/PSDSCPullServer.svc/Nodes(AgentId='<ID>') returned unexpected response code InternalServerError. .
    + CategoryInfo          : InvalidResult: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : RegisterDscAgentUnsuccessful,Microsoft.PowerShell.DesiredStateConfiguration.Commands.RegisterDscAgentCommand
    + PSComputerName        : <computername>

K tomu může dojít v případě, že certifikát použitý na serveru k šifrování provozu má běžný název (CN), který se liší od názvu DNS, který uzel používá k překladu adresy URL. Aktualizujte instanci Systému Windows Pull Server tak, aby používala certifikát s opraveným názvem.

Chyba při spuštění nástroje Sysprep po použití konfigurace DSC

Při pokusu o spuštění nástroje Sysprep ke generalizaci Windows Serveru po použití konfigurace DSC se může zobrazit následující chyba.

SYSPRP LaunchDll:Failure occurred while executing 'DscCore.dll,SysPrep_Cleanup', returned error code 0x2

Generalizace serveru po jeho konfiguraci pomocí Windows PowerShell Desired State Configuration není podporovaným scénářem. Místo toho použijte konfigurace pro Systém Windows po dokončení fáze Specializovat instalační program systému Windows.

Viz také

Koncepty

Další prostředky