ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: Windows PowerShell 4.0، Windows PowerShell 5.1
توفر هذه المقالة إرشادات استكشاف الأخطاء وإصلاحها للأخطاء الشائعة.
تبعية WinRM
يعتمد Windows PowerShell تكوين الحالة المطلوبة (DSC) على WinRM. لا يتم تمكين WinRM بشكل افتراضي على Windows Server 2008 R2 وWindows 7. قم بتشغيل Set-WSManQuickConfig
، في جلسة عمل Windows PowerShell مرتفعة، لتمكين WinRM.
استخدام Get-DscConfigurationStatus
يحصل Get-DscConfigurationStatus cmdlet على معلومات حول حالة التكوين من عقدة هدف. يقوم الأمر بإرجاع كائن غني يتضمن معلومات عالية المستوى حول ما إذا كان تشغيل التكوين ناجحا أم لا. يمكنك البحث في العنصر لاكتشاف تفاصيل حول تشغيل التكوين مثل:
- كل مورد فشل.
- أي مورد طلب إعادة التشغيل.
- Meta-Configuration الإعدادات في وقت تشغيل التكوين.
تقوم مجموعة المعلمات التالية بإرجاع معلومات الحالة لآخر تشغيل للتكوين:
Get-DscConfigurationStatus [-CimSession <CimSession[]>]
[-ThrottleLimit <int>]
[-AsJob]
[<CommonParameters>]
تقوم مجموعة المعلمات التالية بإرجاع معلومات الحالة لكل تشغيل تكوين:
Get-DscConfigurationStatus -All
[-CimSession <CimSession[]>]
[-ThrottleLimit <int>]
[-AsJob]
[<CommonParameters>]
مثال
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 :
لن يتم تشغيل البرنامج النصي الخاص بي: استخدام سجلات DSC لتشخيص أخطاء البرنامج النصي
مثل جميع برامج Windows، يسجل DSC الأخطاء والأحداث في السجلات المتوفرة للمراجعة في عارض الأحداث. يمكن أن يساعدك فحص هذه السجلات على فهم سبب فشل عملية معينة، وكيفية منع الفشل في المستقبل. لتسهيل تعقب الأخطاء أثناء التأليف، استخدم مورد سجل DSC لتعقب تقدم التكوين الخاص بك في سجل أحداث DSC التحليلي.
أين توجد سجلات أحداث DSC؟
في عارض الأحداث، توجد أحداث DSC في: Applications and Services Logs/Microsoft/Windows/Desired State Configuration
يمكنك تشغيل PowerShell cmdlet المقابل، 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} :
اسم السجل الأساسي ل DSC هو Microsoft-Windows-DSC>> (لا تظهر أسماء السجلات الأخرى ضمن Windows هنا للإيجاز). يلحق الاسم الأساسي باسم القناة لإنشاء اسم السجل الكامل.
يكتب محرك DSC بشكل أساسي في ثلاثة أنواع من السجلات: سجلات التشغيل والتحليل وتصحيح الأخطاء. نظرا لأن سجلات التحليل وتصحيح الأخطاء لا يتم تمكينها بشكل افتراضي، يجب تمكينها في عارض الأحداث. لتطبيق ذلك:
افتح عارض الأحداث إما عن طريق:
-
Show-EventLog
الكتابة في Windows PowerShell - تحديد زر البدء، ثم لوحة التحكم، ثم الأدوات الإدارية، ثم عارض الأحداث.
-
في القائمة عرض في عارض الأحداث، حدد Show Analytic and Debug Logs.
اسم السجل للقناة التحليلية هو
Microsoft-Windows-Dsc/Analytic
، وقناة تتبع الأخطاء هيMicrosoft-Windows-Dsc/Debug
.
يمكنك أيضا استخدام الأداة المساعدة wevtutil لتمكين السجلات، كما هو موضح في المثال التالي.
wevtutil.exe set-log "Microsoft-Windows-Dsc/Analytic" /q:true /e:true
أو استخدم PowerShell و.NET لتمكين السجلات كما هو موضح في المثال التالي:
$logName = 'Microsoft-Windows-Dsc/Analytic'
$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration $logName
$log.IsEnabled = $true
$log.SaveChanges()
ما الذي تحتوي عليه سجلات DSC؟
يسجل DSC إلى ثلاث قنوات سجل مختلفة استنادا إلى أهمية الرسالة. يتضمن السجل التشغيلي في DSC جميع رسائل الخطأ، وهو مفيد لتحديد مشكلة. يحتوي السجل التحليلي على حجم أكبر من الأحداث، ويمكنه تحديد مكان حدوث الأخطاء. تتضمن هذه القناة أيضا أي رسائل مطولة منبعثة. يحتوي سجل تتبع الأخطاء على سجلات يمكن أن تساعدك على فهم كيفية حدوث الأخطاء. تبدأ رسائل حدث DSC بمعرف مهمة يمثل عملية DSC بشكل فريد. يحاول المثال التالي الحصول على الرسالة من الحدث الأول الذي تم تسجيله في سجل 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 الأحداث ببنية تمكن المستخدم من جمع الأحداث من مهمة DSC واحدة. البنية كما يلي:
Job ID : <Guid>
<Event Message>
جمع الأحداث من عملية DSC واحدة
تحتوي سجلات أحداث DSC على أحداث تم إنشاؤها بواسطة عمليات DSC المختلفة. ومع ذلك، عادة ما تكون مهتما بتفاصيل عملية معينة. يمكن تجميع جميع سجلات DSC حسب خاصية معرف الوظيفة الفريدة لكل عملية DSC. يظهر معرف الوظيفة كقيمة خاصية أولى في جميع أحداث DSC. تشرح الخطوات التالية كيفية تجميع جميع الأحداث في بنية صفيف مجمعة.
<##########################################################################
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}
هنا، يتضمن المتغير $SeparateDscOperations
السجلات المجمعة حسب معرفات الوظيفة. يمثل كل عنصر صفيف من هذا المتغير مجموعة من الأحداث التي تم تسجيلها بواسطة عملية DSC مختلفة، ما يسمح بالوصول إلى مزيد من المعلومات حول السجلات.
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} : ...
يمكنك استخراج البيانات في المتغير $SeparateDscOperations
باستخدام Where-Object.
فيما يلي خمسة سيناريوهات حيث قد تحتاج إلى استخراج البيانات لاستكشاف أخطاء DSC وإصلاحها:
1: فشل العمليات
جميع الأحداث لها مستويات خطورة. هذه المعلومات مفيدة لتحديد أحداث الخطأ:
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: تفاصيل العمليات التي يتم تشغيلها في النصف ساعة الماضية
TimeCreated
، خاصية لكل حدث Windows، تنص على وقت إنشاء الحدث. مقارنة هذه الخاصية مع كائن تاريخ/وقت معين مفيد لتصفية جميع الأحداث:
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: رسائل من أحدث عملية
يتم تخزين أحدث عملية في الفهرس الأول لمجموعة $SeparateDscOperations
الصفيف .
يؤدي الاستعلام عن رسائل المجموعة للفهرس 0 إلى إرجاع جميع الرسائل لآخر عملية:
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: رسائل الخطأ التي تم تسجيلها للعمليات الفاشلة الأخيرة
$SeparateDscOperations[0].Group
لديه مجموعة من الأحداث لأحدث عملية.
Where-Object
قم بتشغيل cmdlet لتصفية الأحداث استنادا إلى اسم عرض المستوى الخاص بها. يتم تخزين النتائج في $myFailedEvent
المتغير، والذي يمكن تشريحه بشكل أكبر للحصول على رسالة الحدث:
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: جميع الأحداث التي تم إنشاؤها لمعرف وظيفة معين.
$SeparateDscOperations
هو صفيف من المجموعات، التي يكون لكل منها الاسم كمعرف وظيفة فريد. من خلال تشغيل Where-Object
cmdlet، يمكنك استخراج مجموعات الأحداث التي لها معرف مهمة معين:
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} : ...
استخدام xDscDiagnostics لتحليل سجلات DSC
xDscDiagnostics هي وحدة PowerShell تتكون من عدة وظائف يمكن أن تساعد في تحليل حالات فشل DSC على جهازك. يمكن أن تساعدك هذه الدالات في تحديد جميع الأحداث المحلية من عمليات DSC السابقة أو أحداث DSC على أجهزة الكمبيوتر البعيدة. هنا، يحدد مصطلح عملية DSC تنفيذ DSC فريدا واحدا من بدايته حتى نهايته. على سبيل المثال، Test-DscConfiguration
ستكون عملية DSC منفصلة. وبالمثل، يمكن تعريف كل cmdlet أخرى في DSC، مثل Get-DscConfiguration
و Start-DscConfiguration
، ك عمليات DSC منفصلة. لمزيد من المعلومات حول وظائف التشخيص، راجع xDscDiagnostics.
الحصول على تفاصيل عمليات DSC
Get-xDscOperation
تتيح لك الدالة العثور على نتائج عمليات DSC التي تعمل على جهاز كمبيوتر واحد أو أكثر. ترجع الدالة كائنا يحتوي على مجموعة الأحداث التي تنتجها كل عملية DSC. على سبيل المثال، في الإخراج التالي، تم تشغيل ثلاثة أوامر. مرت الأولى، وفشل الاثنان الآخران. يلخص إخراج Get-xDscOperation
هذه النتائج.
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...
يمكنك الحصول على نتائج لأحدث العمليات فقط عن طريق تحديد أحدث معلمة:
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...
الحصول على تفاصيل أحداث DSC
Trace-xDscOperation
يقوم cmdlet بإرجاع كائن يحتوي على مجموعة من الأحداث وأنواع الأحداث الخاصة بها وإخراج الرسالة التي تم إنشاؤها من عملية DSC معينة. عادة، عندما تجد فشلا في أي من العمليات باستخدام Get-xDscOperation
، يمكنك تتبع هذه العملية للعثور على الأحداث التي تسببت في فشل.
استخدم المعلمة SequenceID
للحصول على الأحداث لعملية معينة لجهاز كمبيوتر معين.
على سبيل المثال، إذا قمت بتحديد SequenceID
9، Trace-xDscOperation
فاحصل على تتبع عملية DSC التي كانت 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.
قم بتمرير GUID المعين لعملية DSC معينة (كما تم إرجاعه بواسطة Get-xDscOperation
cmdlet) للحصول على تفاصيل الحدث لعملية 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
لاحظ أنه نظرا إلى Trace-xDscOperation
أنه يجمع الأحداث من السجلات التحليلية والتصحيح والتشغيلية، فإنه يطالبك بتمكين هذه السجلات.
بدلا من ذلك، يمكنك جمع معلومات حول الأحداث عن طريق حفظ إخراج Trace-xDscOperation
في متغير. يمكنك استخدام الأوامر التالية لعرض جميع الأحداث لعملية DSC معينة.
PS C:\DiagnosticsTest> $Trace = Trace-xDscOperation -SequenceID 4
PS C:\DiagnosticsTest> $Trace.Event
يعرض هذا نفس نتائج Get-WinEvent
cmdlet، كما هو الحال في الإخراج التالي:
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.
من الناحية المثالية، يمكنك أولا استخدام Get-xDscOperation
لسرد آخر عدد قليل من تكوين DSC يعمل على أجهزتك. بعد ذلك، يمكنك فحص أي عملية واحدة عن طريق تحديد SequenceID أو JobID الخاص Trace-xDscOperation
به لاكتشاف ما فعله خلف الكواليس.
الحصول على أحداث لجهاز كمبيوتر بعيد
ComputerName
استخدم معلمة Trace-xDscOperation
cmdlet للحصول على تفاصيل الحدث على كمبيوتر بعيد. قبل أن تتمكن من القيام بذلك، يجب عليك إنشاء قاعدة جدار حماية للسماح بالإدارة عن بعد على الكمبيوتر البعيد:
New-NetFirewallRule -Name "Service RemoteAdmin" -DisplayName "Remote" -Action Allow
يمكنك الآن تحديد هذا الكمبيوتر في مكالمتك إلى 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...
لن يتم تحديث مواردي: كيفية إعادة تعيين ذاكرة التخزين المؤقت
يخزن محرك DSC الموارد التي تم تنفيذها كوحدة PowerShell لأغراض الكفاءة. ومع ذلك، يمكن أن يتسبب هذا في حدوث مشكلات عند تأليف مورد واختباره في وقت واحد لأن DSC يقوم بتحميل الإصدار المخزن مؤقتا حتى تتم إعادة تشغيل العملية. الطريقة الوحيدة لجعل DSC تحميل الإصدار الأحدث هي إنهاء العملية التي تستضيف محرك DSC بشكل صريح.
وبالمثل، عند تشغيل Start-DscConfiguration
، بعد إضافة مورد مخصص وتعديله، قد لا يتم تنفيذ التعديل ما لم يتم إعادة تشغيل الكمبيوتر أو حتى ذلك. وذلك لأن DSC يعمل في عملية مضيف موفر WMI (WmiPrvSE
)، وعادة ما يكون هناك العديد من مثيلات WmiPrvSE قيد التشغيل في وقت واحد. عند إعادة التشغيل، تتم إعادة تشغيل عملية المضيف ومسح ذاكرة التخزين المؤقت.
لإعادة تدوير التكوين بنجاح ومسح ذاكرة التخزين المؤقت دون إعادة التشغيل، يجب إيقاف عملية المضيف ثم إعادة تشغيلها. يمكن أن يكون هذا على أساس كل مثيل، حيث يمكنك تحديد العملية وإيقافها وإعادة تشغيلها. أو يمكنك استخدام DebugMode
، كما هو موضح أدناه، لإعادة تحميل مورد PowerShell DSC.
لتحديد العملية التي تستضيف محرك DSC، قم بإدراج معرف العملية ل WmiPrvSE
، الذي يستضيف محرك DSC. بعد ذلك، لتحديث الموفر، أوقف WmiPrvSE
العملية باستخدام الأوامر أدناه، ثم قم بتشغيل Start-DscConfiguration
مرة أخرى.
###
### 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
استخدام DebugMode
يمكنك تكوين DSC Local Configuration Manager (LCM) لاستخدامه DebugMode
لمسح ذاكرة التخزين المؤقت دائما عند إعادة تشغيل عملية المضيف. عند التعيين إلى $true
، فإنه يتسبب في إعادة تحميل المحرك دائما لمورد PowerShell DSC. بمجرد الانتهاء من كتابة المورد الخاص بك، يمكنك تعيينه مرة أخرى إلى $false
ويعود المحرك إلى سلوكه المتمثل في التخزين المؤقت للوحدات النمطية.
فيما يلي عرض توضيحي لإظهار كيفية DebugMode
تحديث ذاكرة التخزين المؤقت تلقائيا. أولا، لنلق نظرة على التكوين الافتراضي:
Get-DscLocalConfigurationManager
AllowModuleOverwrite : False
CertificateID :
ConfigurationID :
ConfigurationMode : ApplyAndMonitor
ConfigurationModeFrequencyMins : 30
Credential :
DebugMode : {None}
DownloadManagerCustomData :
DownloadManagerName :
LocalConfigurationManagerState : Ready
RebootNodeIfNeeded : False
RefreshFrequencyMins : 15
RefreshMode : PUSH
PSComputerName :
يمكنك أن ترى أن DebugMode
هو None
.
لإعداد العرض التوضيحي DebugMode
، استخدم مورد PowerShell التالي:
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
}
الآن، تأليف تكوين يسمى TestProviderDebugMode
:
Configuration ConfigTestDebugMode
{
Import-DscResource -Name TestProviderDebugMode
Node localhost
{
TestProviderDebugMode test
{
onlyProperty = "blah"
}
}
}
ConfigTestDebugMode
محتوى الملف $env:SystemDrive\OutputFromTestProviderDebugMode.txt
هو 1
.
الآن، قم بتحديث التعليمات البرمجية للموفر باستخدام البرنامج النصي التالي:
$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
ينشئ هذا البرنامج النصي رقما عشوائيا ويحدث التعليمات البرمجية للموفر. مع DebugMode
تعيين إلى خطأ، لا يتم تغيير محتويات الملف $env:SystemDrive\OutputFromTestProviderDebugMode.txt
أبدا.
الآن، قم بتعيين DebugMode
إلى ForceModuleImport
في البرنامج النصي للتكوين الخاص بك:
LocalConfigurationManager
{
DebugMode = "ForceModuleImport"
}
عند تشغيل البرنامج النصي مرة أخرى، لاحظ أن محتوى الملف مختلف في كل مرة. يمكنك تشغيل Get-DscConfiguration
للتحقق منه. تظهر القصاصة البرمجية أدناه نتيجة تشغيلين إضافيين. قد تختلف نتائجك عند تشغيل البرنامج النصي.
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 "رمز الاستجابة غير المتوقع InternalServerError" عند التسجيل مع Windows Pull Server
عند تطبيق تكوين تعريف على خادم لتسجيله مع مثيل Windows Pull Server، قد تحصل على الخطأ التالي.
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>
يمكن أن يحدث هذا عندما تحتوي الشهادة المستخدمة على الخادم لتشفير نسبة استخدام الشبكة على اسم شائع (CN) يختلف عن اسم DNS الذي تستخدمه العقدة لحل عنوان URL. قم بتحديث مثيل Windows Pull Server لاستخدام شهادة باسم مصحح.
خطأ عند تشغيل Sysprep بعد تطبيق تكوين DSC
عند محاولة تشغيل Sysprep لتعميم خادم Windows بعد تطبيق تكوين DSC، قد تحصل على الخطأ التالي.
SYSPRP LaunchDll:Failure occurred while executing 'DscCore.dll,SysPrep_Cleanup', returned error code 0x2
تعميم خادم بعد تكوينه باستخدام Windows PowerShell تكوين الحالة المطلوبة ليس سيناريو مدعوما. بدلا من ذلك، قم بتطبيق التكوينات على Windows بعد اكتمال مرحلة التخصص في إعداد Windows.