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-WSManQuickConfig
egy 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:
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ő.
- Gépelés
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/Analytic
napló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-DscConfiguration
a, 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-xDscOperation
vé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-DscConfiguration
egy 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 DebugMode
az 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 WmiPrvSE
DSC-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 $true
van á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ű TestProviderDebugMode
konfigurá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 DebugMode
ForceModuleImport
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: