Ř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-WSManQuickConfig
v 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:
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í.
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/Analytic
a kanál ladění jeMicrosoft-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 $SeparateDscOperations
polí .
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-xDscOperation
ná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 WmiPrvSE
procesu , 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.