A DSC hibaelhárítása

Érintett kiadások: Windows PowerShell 4.0, Windows PowerShell 5.1

Ez a cikk hibaelhárítási útmutatást nyújt a gyakori hibákhoz.

WinRM-függőség

Windows PowerShell Desired State Configuration (DSC) a WinRM-től függ. A WinRM alapértelmezés szerint nincs engedélyezve Windows Server 2008 R2 és Windows 7 rendszeren. Futtassa a parancsot Set-WSManQuickConfigegy Windows PowerShell emelt szintű munkamenetben a WinRM engedélyezéséhez.

A Get-DscConfigurationStatus használata

A Get-DscConfigurationStatus parancsmag információt kap a célcsomópont konfigurációs állapotáról. A parancs egy gazdag objektumot ad vissza, amely magas szintű információkat tartalmaz arról, hogy a konfigurációs futtatás sikeres volt-e. A konfigurációs futtatás részleteinek felderítéséhez feltárhatja az objektumot, például:

  • Minden sikertelen erőforrás.
  • Minden olyan erőforrás, amely újraindítást kért.
  • Meta-Configuration beállításokat a konfiguráció futtatásakor.

A következő paraméterkészlet az utolsó konfigurációs futtatás állapotadatait adja vissza:

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

A következő paraméterkészlet minden konfigurációs futtatás állapotadatait adja vissza:

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

Példa

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        :

A szkript nem fut: A szkripthibák diagnosztizálása DSC-naplókkal

Mint minden Windows-szoftver, a DSC is rögzíti a hibákat és eseményeket a naplókban, amelyek megtekinthetők eseménymegtekintő. A naplók megvizsgálásával megértheti, hogy egy adott művelet miért hiúsult meg, és hogyan előzheti meg a jövőbeli hibákat. A hibák nyomon követésének megkönnyítése érdekében használja a DSC-naplóerőforrást a konfiguráció előrehaladásának nyomon követéséhez a DSC elemzési eseménynaplójában.

Hol találhatók a DSC-eseménynaplók?

A eseménymegtekintő DSC-események a következő helyen találhatók: Alkalmazások és szolgáltatások naplói/Microsoft/Windows/Desired State Configuration

Az eseménynaplók megtekintéséhez futtassa a megfelelő Get-WinEvent PowerShell-parancsmagot:

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} :

A DSC elsődleges naplóneve a Microsoft-Windows-DSC>> (a Windows alatt más naplónevek nem jelennek meg a rövidség kedvéért). Az elsődleges név hozzáfűzi a csatorna nevét a teljes naplónév létrehozásához.

A DSC-motor főként három naplótípusba ír: operatív, elemzési és hibakeresési naplókba. Mivel az elemzési és hibakeresési naplók alapértelmezés szerint nincsenek engedélyezve, engedélyeznie kell őket a eseménymegtekintő. Ehhez tegye a következőket:

  1. Nyissa meg eseménymegtekintő a következővel:

    • Gépelés Show-EventLog Windows PowerShell
    • Válassza a Start gombot, majd Vezérlőpult, majd a Felügyeleti eszközök lehetőséget, majd eseménymegtekintő.
  2. Az Eseménynapló Nézet menüjében válassza az Elemzési és hibakeresési naplók megjelenítése lehetőséget.

    Az elemzési csatorna Microsoft-Windows-Dsc/Analyticnaplójának neve , a hibakeresési csatorna pedig .Microsoft-Windows-Dsc/Debug

A wevtutil segédprogrammal is engedélyezheti a naplókat az alábbi példában látható módon.

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

Vagy használja a PowerShellt és a .NET-et a naplók engedélyezéséhez az alábbi példában látható módon:

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

Mit tartalmaznak a DSC-naplók?

A DSC három különböző naplócsatornára naplóz az üzenet fontossága alapján. A DSC működési naplója tartalmazza az összes hibaüzenetet, és hasznos a probléma azonosításához. Az elemzési napló nagyobb mennyiségű eseményt tartalmazhat, és képes azonosítani a hibák előfordulásának helyét. Ez a csatorna a kiadott részletes üzeneteket is tartalmazza. A hibakeresési napló olyan naplókkal rendelkezik, amelyek segítenek megérteni a hibák előfordulását. A DSC-eseményüzenetek egy olyan feladatazonosítóval kezdődnek, amely egyedileg jelöl egy DSC-műveletet. Az alábbi példa megpróbálja lekérni az üzenetet az operatív DSC-naplóba naplózott első eseményből.

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.

A DSC olyan struktúrával naplózza az eseményeket, amely lehetővé teszi, hogy a felhasználó eseményeket gyűjtsön egy DSC-feladatból. A struktúra a következő:

Job ID : <Guid>
<Event Message>

Események összegyűjtése egyetlen DSC-műveletből

A DSC-eseménynaplók különböző DSC-műveletek által létrehozott eseményeket tartalmaznak. Általában azonban egy adott művelet részleteivel foglalkozik. Minden DSC-napló csoportosítható a feladatazonosító tulajdonság alapján, amely minden DSC-művelethez egyedi. A feladatazonosító az összes DSC-esemény első tulajdonságértékeként jelenik meg. Az alábbi lépések azt mutatják be, hogyan gyűjthetők össze az események egy csoportosított tömbstruktúrában.

<##########################################################################
 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}

Itt a változó $SeparateDscOperations a feladatazonosítók szerint csoportosított naplókat tartalmazza. A változó minden tömbeleme egy másik DSC-művelet által naplózott eseménycsoportot jelöl, így további információkhoz férhet hozzá a naplókról.

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} : ...

A változóban $SeparateDscOperations lévő adatokat a Where-Object paranccsal nyerheti ki. Az alábbi öt forgatókönyvben érdemes lehet adatokat kinyerni a DSC hibaelhárításához:

1: Műveleti hibák

Minden esemény súlyossági szinttel rendelkezik. Ezek az információk a hibaesemények azonosításához hasznosak:

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: Az elmúlt fél órában futtatott műveletek részletei

TimeCreated, minden Windows-esemény tulajdonsága, amely az esemény létrehozásának időpontját tartalmazza. A tulajdonság és egy adott dátum/idő objektum összehasonlítása az összes esemény szűréséhez hasznos:

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: A legutóbbi művelet üzenetei

A legújabb műveletet a tömbcsoport első indexében tárolja a rendszer $SeparateDscOperations. A csoport 0 indexre vonatkozó üzeneteinek lekérdezése a legújabb művelet összes üzenetét visszaadja:

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: A legutóbbi sikertelen műveletekhez naplózott hibaüzenetek

$SeparateDscOperations[0].Group rendelkezik a legújabb művelet eseménykészletével. Futtassa a Where-Object parancsmagot az események szűréséhez a szint megjelenített neve alapján. Az eredmények tárolása a $myFailedEvent változóban történik, amely további boncolható az eseményüzenet lekéréséhez:

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: Egy adott feladatazonosítóhoz létrehozott összes esemény.

$SeparateDscOperations a csoportok tömbje, amelyek mindegyike egyedi feladatazonosítóként szerepel a névvel. A Where-Object parancsmag futtatásával kinyerheti azokat az eseménycsoportokat, amelyek egy adott feladatazonosítóval rendelkeznek:

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} : ...

DSC-naplók elemzése xDscDiagnostics használatával

Az xDscDiagnostics egy PowerShell-modul, amely több olyan függvényből áll, amelyek segíthetnek a DSC-hibák elemzésében a gépen. Ezek a függvények segíthetnek azonosítani a korábbi DSC-műveletek összes helyi eseményét, illetve a távoli számítógépeken lévő DSC-eseményeket. Itt a DSC-művelet kifejezés egyetlen egyedi DSC-végrehajtást határoz meg az elejétől a végéig. Ez lehet például Test-DscConfiguration egy különálló DSC-művelet. Hasonlóképpen, a DSC minden más parancsmagja, például Get-DscConfiguration a és Start-DscConfigurationa, külön DSC-műveletként azonosítható. A diagnosztikai függvényekkel kapcsolatos további információkért lásd: xDscDiagnostics.

A DSC-műveletek részleteinek lekérése

A Get-xDscOperation függvény segítségével megtalálhatja az egy vagy több számítógépen futó DSC-műveletek eredményeit. A függvény egy objektumot ad vissza, amely az egyes DSC-műveletek által létrehozott események gyűjteményét tartalmazza. Az alábbi kimenetben például három parancs volt futtatva. Az első átment, a másik kettő pedig sikertelen volt. A kimenet összefoglalja Get-xDscOperation ezeket az eredményeket.

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...

A Legújabb paraméter megadásával csak a legutóbbi műveletek eredményei jelennek meg:

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...

A DSC-események részleteinek lekérése

A Trace-xDscOperation parancsmag egy objektumot ad vissza, amely egy eseménygyűjteményt, azok eseménytípusait és egy adott DSC-műveletből generált üzenetkimenetet tartalmaz. Általában, ha hibát talál a használatával Get-xDscOperationvégzett műveletek bármelyikében, a művelet nyomon követésével megkeresheti a hibát okozó eseményeket.

A paraméterrel SequenceID lekérheti egy adott művelet eseményeit egy adott számítógéphez. Ha például 9-et ad meg SequenceID , Trace-xDscOperation kérje le a DSC-művelet nyomkövetését, amely a legutóbbi művelet 9.

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.

Adja át egy adott DSC-művelethez rendelt GUID-t (a Get-xDscOperation parancsmag által visszaadott módon) az adott DSC-művelet eseményadatainak lekéréséhez:

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

Vegye figyelembe, hogy mivel Trace-xDscOperation az elemzési, hibakeresési és működési naplók eseményeit összesíti, a naplók engedélyezését kéri.

Másik lehetőségként információkat gyűjthet az eseményekről, ha a kimenetét Trace-xDscOperation egy változóba menti. Az alábbi parancsokkal megjelenítheti egy adott DSC-művelet összes eseményét.

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

PS C:\DiagnosticsTest> $Trace.Event

Ez ugyanazokat az eredményeket jeleníti meg, mint a Get-WinEvent parancsmag, például a következő kimenetben:

   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.

Ideális esetben először az utolsó néhány DSC-konfigurációs futtatás listázására érdemes használni Get-xDscOperation a gépeken. Ezt követően bármilyen műveletet megvizsgálhat, ha megadja a SequenceID vagy a JobIDTrace-xDscOperation azonosítóját, hogy kiderítse, mit tett a színfalak mögött.

Események lekérése távoli számítógéphez

ComputerName A parancsmag paraméterével Trace-xDscOperation lekérheti az esemény részleteit egy távoli számítógépen. Ehhez létre kell hoznia egy tűzfalszabályt, amely lehetővé teszi a távoli felügyeletet a távoli számítógépen:

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

Most már megadhatja a számítógépet a hívásban 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...

Az erőforrásaim nem frissülnek: A gyorsítótár alaphelyzetbe állítása

A DSC-motor a Hatékonyság érdekében gyorsítótárazza a PowerShell-modulként implementált erőforrásokat. Ez azonban problémákat okozhat egy erőforrás létrehozásakor és egyidejű tesztelésekor, mivel a DSC betölti a gyorsítótárazott verziót, amíg a folyamat újra nem indul. A DSC újabb verziójának betöltésének egyetlen módja a DSC-motort futtató folyamat explicit leállítása.

Hasonlóképpen, amikor a parancsot futtatja Start-DscConfigurationegy egyéni erőforrás hozzáadása és módosítása után, előfordulhat, hogy a módosítás csak akkor hajtható végre, ha vagy amíg a számítógép újra nem indul. Ennek az az oka, hogy a DSC a WMI-szolgáltatói gazdafolyamatban (WmiPrvSE) fut, és általában egyszerre számos WmiPrvSE-példány fut. Újraindításkor a gazdafolyamat újraindul, és törli a gyorsítótárat.

A konfiguráció sikeres újrahasznosításához és a gyorsítótár újraindítás nélküli törléséhez le kell állítania, majd újra kell indítania a gazdafolyamatot. Ez példányonként is előfordulhat, amelynek során azonosítja a folyamatot, leállítja és újraindítja. Vagy használhatja DebugModeaz alábbiakban bemutatott módon a PowerShell DSC-erőforrás újrabetöltését.

A DSC-motort futtató folyamat azonosításához sorolja fel a WmiPrvSEDSC-motort üzemeltető folyamatazonosítót. Ezután a szolgáltató frissítéséhez állítsa le a folyamatot az WmiPrvSE alábbi parancsokkal, majd futtassa Start-DscConfiguration újra.

###
### 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

A DebugMode használata

A DSC Helyi Configuration Manager (LCM) DebugMode konfigurálásával mindig törölheti a gyorsítótárat a gazdafolyamat újraindításakor. Ha a értékre $truevan állítva, a motor mindig újra betölti a PowerShell DSC-erőforrást. Ha végzett az erőforrás megírásával, visszaállíthatja azt értékre $false , és a motor visszaáll a modulok gyorsítótárazásának viselkedésére.

Az alábbiakban bemutatjuk, hogyan DebugMode frissíthető automatikusan a gyorsítótár. Először nézzük meg az alapértelmezett konfigurációt:

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

Láthatja, hogy ez DebugMode a következő None: .

A bemutató beállításához DebugMode használja a következő PowerShell-erőforrást:

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
}

Most hozzon létre egy nevű TestProviderDebugModekonfigurációt:

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

A fájl $env:SystemDrive\OutputFromTestProviderDebugMode.txt tartalma : 1.

Most frissítse a szolgáltató kódját a következő szkripttel:

$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

Ez a szkript létrehoz egy véletlenszerű számot, és frissíti a szolgáltató kódját. Ha false (hamis) értékre DebugMode van állítva, a fájl $env:SystemDrive\OutputFromTestProviderDebugMode.txt tartalma soha nem változik.

Most állítsa be a értéket DebugModeForceModuleImport a konfigurációs szkriptben:

LocalConfigurationManager
{
    DebugMode = "ForceModuleImport"
}

Amikor ismét futtatja a szkriptet, vegye figyelembe, hogy a fájl tartalma minden alkalommal más. Az ellenőrzéshez futtassa a parancsot Get-DscConfiguration . Az alábbi kódrészlet két további futtatás eredményét jeleníti meg. A szkript futtatásakor az eredmények eltérőek lehetnek.

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

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

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

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

A DSC "váratlan válaszkódot ad vissza internalServerError" a Windows Pull Serveren való regisztrációkor

Ha metakonfigurálást alkalmaz egy kiszolgálóra, hogy regisztrálja azt a Windows Lekéréses kiszolgáló egy példányában, a következő hibaüzenet jelenhet meg.

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>

Ez akkor fordulhat elő, ha a kiszolgálón a forgalom titkosítására használt tanúsítvány köznapi névvel (CN) rendelkezik, amely eltér a csomópont által az URL-cím feloldásához használt DNS-névvel. Frissítse a Windows Pull Server-példányt úgy, hogy kijavított névvel rendelkező tanúsítványt használjon.

Hiba a Sysprep DSC-konfiguráció alkalmazása után történő futtatásakor

Amikor a Sysprep futtatásával próbálja általánosítani a Windows Servert egy DSC-konfiguráció alkalmazása után, a következő hibaüzenet jelenhet meg.

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

A kiszolgáló általánosítása a Windows PowerShell Desired State Configuration használatával történő konfigurálás után nem támogatott forgatókönyv. Ehelyett alkalmazza a konfigurációkat a Windowsra, miután a Windows telepítő specializálási fázisa befejeződött.

Lásd még:

Alapelvek

Egyéb források