DSC’de sorun giderme
Şunlar için geçerlidir: Windows PowerShell 4.0, Windows PowerShell 5.1
Bu makalede sık karşılaşılan hatalar için sorun giderme yönergeleri sağlanır.
WinRM Bağımlılığı
Windows PowerShell Desired State Configuration (DSC), WinRM'ye bağlıdır. WinRM, Windows Server 2008 R2 ve Windows 7'de varsayılan olarak etkin değildir. WinRM'yi etkinleştirmek için Windows PowerShell yükseltilmiş bir oturumda komutunu çalıştırınSet-WSManQuickConfig
.
Get-DscConfigurationStatus kullanma
Get-DscConfigurationStatus cmdlet'i bir hedef düğümden yapılandırma durumu hakkında bilgi alır. komut, yapılandırma çalıştırmasının başarılı olup olmadığı hakkında üst düzey bilgiler içeren zengin bir nesne döndürür. Yapılandırma çalıştırması hakkında aşağıdakiler gibi ayrıntıları bulmak için nesnesini inceleyebilirsiniz:
- Başarısız olan her kaynak.
- Yeniden başlatma isteğinde bulunmayı gerektiren herhangi bir kaynak.
- Yapılandırma çalıştırıldığında ayarları Meta-Configuration.
Aşağıdaki parametre kümesi, son yapılandırma çalıştırması için durum bilgilerini döndürür:
Get-DscConfigurationStatus [-CimSession <CimSession[]>]
[-ThrottleLimit <int>]
[-AsJob]
[<CommonParameters>]
Aşağıdaki parametre kümesi, her yapılandırma çalıştırması için durum bilgilerini döndürür:
Get-DscConfigurationStatus -All
[-CimSession <CimSession[]>]
[-ThrottleLimit <int>]
[-AsJob]
[<CommonParameters>]
Örnek
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 :
Betiğim çalışmıyor: Betik hatalarını tanılamak için DSC günlüklerini kullanma
Tüm Windows yazılımları gibi DSC de hataları ve olayları Olay Görüntüleyicisi gözden geçirilebilecek günlüklere kaydeder. Bu günlükleri incelemek, belirli bir işlemin neden başarısız olduğunu ve gelecekte hatanın nasıl önlenebileceğini anlamanıza yardımcı olabilir. Siz yazarken hataları izlemeyi kolaylaştırmak için DSC Günlük kaynağını kullanarak DSC Analytic olay günlüğünde yapılandırmanızın ilerleme durumunu izleyin.
DSC olay günlükleri nerede?
Olay Görüntüleyicisi'da DSC olayları şunlardır: Uygulama ve Hizmet Günlükleri/Microsoft/Windows/Desired State Configuration
Olay günlüklerini görüntülemek için karşılık gelen Get-WinEvent PowerShell cmdlet'ini çalıştırabilirsiniz:
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'nin birincil günlük adı Microsoft-Windows-DSC'dir>> (Windows altındaki diğer günlük adları kısa süre için burada gösterilmez). Birincil ad, tam günlük adını oluşturmak için kanal adının sonuna eklenir.
DSC altyapısı temelde üç günlük türüne yazar: İşlem, Analiz ve Hata Ayıklama günlükleri. Analiz ve hata ayıklama günlükleri varsayılan olarak etkinleştirilmediğinden, bunları Olay Görüntüleyicisi'de etkinleştirmeniz gerekir. Bunu yapmak için:
Olay Görüntüleyicisi şu iki durumdan birini kullanarak açın:
Show-EventLog
Windows PowerShell- Başlangıç düğmesini seçip Denetim Masası, ardından Yönetimsel Araçlar'ı seçip Olay Görüntüleyicisi.
Olay görüntüleyicisindeki Görünüm menüsünde Analiz ve Hata Ayıklama Günlüklerini Göster'i seçin.
Analiz kanalının günlük adı ,
Microsoft-Windows-Dsc/Analytic
hata ayıklama kanalı ise şeklindedirMicrosoft-Windows-Dsc/Debug
.
Aşağıdaki örnekte gösterildiği gibi günlükleri etkinleştirmek için wevtutil yardımcı programını da kullanabilirsiniz.
wevtutil.exe set-log "Microsoft-Windows-Dsc/Analytic" /q:true /e:true
Veya aşağıdaki örnekte gösterildiği gibi günlükleri etkinleştirmek için PowerShell ve .NET kullanın:
$logName = 'Microsoft-Windows-Dsc/Analytic'
$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration $logName
$log.IsEnabled = $true
$log.SaveChanges()
DSC günlükleri ne içerir?
DSC, iletinin önemine göre üç farklı günlük kanalına günlükler. DSC'deki işlem günlüğü tüm hata iletilerini içerir ve bir sorunu tanımlamak için kullanışlıdır. Analiz günlüğünde daha fazla olay hacmi vardır ve hataların nerede oluştuğu belirlenebilir. Bu kanal, yayılan ayrıntılı iletileri de içerir. Hata ayıklama günlüğünde hataların nasıl oluştuğunun anlaşılmasına yardımcı olabilecek günlükler bulunur. DSC olay iletileri, bir DSC işlemini benzersiz olarak temsil eden bir iş kimliğiyle başlar. Aşağıdaki örnek, işletimsel DSC günlüğünde oturum açan ilk olaydan iletiyi almayı dener.
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, kullanıcının bir DSC işinden olay toplamasını sağlayan bir yapıya sahip olayları günlüğe kaydeder. Yapı aşağıdaki gibidir:
Job ID : <Guid>
<Event Message>
Tek bir DSC işleminden olay toplama
DSC olay günlükleri çeşitli DSC işlemleri tarafından oluşturulan olayları içerir. Ancak genellikle belirli bir işlemin ayrıntılarıyla ilgilenirsiniz. Tüm DSC günlükleri, her DSC işlemi için benzersiz olan iş kimliği özelliğine göre gruplandırılabilir. İş kimliği, tüm DSC olaylarında ilk özellik değeri olarak gösterilir. Aşağıdaki adımlar, gruplandırılmış dizi yapısındaki tüm olayların nasıl biriktiğini açıklar.
<##########################################################################
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}
Burada değişken $SeparateDscOperations
, iş kimliklerine göre gruplandırılmış günlükleri içerir. Bu değişkenin her dizi öğesi, farklı bir DSC işlemi tarafından günlüğe kaydedilen bir olay grubunu temsil eder ve günlükler hakkında daha fazla bilgiye erişim sağlar.
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} : ...
Where-Object kullanarak değişkendeki $SeparateDscOperations
verileri ayıklayabilirsiniz.
Aşağıda, DSC sorunlarını gidermek için verileri ayıklamak isteyebileceğiniz beş senaryo vardır:
1: İşlem hataları
Tüm olayların önem düzeyi vardır. Bu bilgiler hata olaylarını tanımlamak için yararlıdır:
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: Son yarım saat içinde çalıştırılacak işlemlerin ayrıntıları
TimeCreated
, her Windows olayının bir özelliği, olayın oluşturulduğu saati belirtir. Bu özelliği belirli bir tarih/saat nesnesiyle karşılaştırmak, tüm olayları filtrelemek için yararlıdır:
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: En son işlemden iletiler
En son işlem, dizi grubunun $SeparateDscOperations
ilk dizininde depolanır.
Dizin 0 için grubun iletilerini sorgulamak, en son işlem için tüm iletileri döndürür:
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: Son başarısız işlemler için günlüğe kaydedilen hata iletileri
$SeparateDscOperations[0].Group
en son işlem için olay kümesine sahiptir. Where-Object
Olayları düzey görünen adlarına göre filtrelemek için cmdlet'ini çalıştırın. Sonuçlar, olay iletisini almak için daha fazla kesilebilen değişkende depolanır $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: Belirli bir iş kimliği için oluşturulan tüm olaylar.
$SeparateDscOperations
, her birinin benzersiz iş kimliği olarak ada sahip bir grup dizisidir. cmdlet'ini Where-Object
çalıştırarak, belirli bir iş kimliğine sahip olan olay gruplarını ayıklayabilirsiniz:
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 günlüklerini analiz etmek için xDscDiagnostics kullanma
xDscDiagnostics , makinenizdeki DSC hatalarını analiz etmek için kullanabileceğiniz çeşitli işlevlerden oluşan bir PowerShell modülüdür. Bu işlevler, geçmiş DSC işlemlerinden veya uzak bilgisayarlardaki DSC olaylarından tüm yerel olayları belirlemenize yardımcı olabilir. Burada DSC işlemi terimi, başından sonuna kadar tek bir benzersiz DSC yürütmesi tanımlar. Örneğin, Test-DscConfiguration
ayrı bir DSC işlemi olabilir. Benzer şekilde, ve Start-DscConfiguration
gibi Get-DscConfiguration
DSC'deki diğer tüm cmdlet'ler ayrı DSC işlemleri olarak tanımlanabilir. Tanılama işlevleri hakkında daha fazla bilgi için bkz. xDscDiagnostics.
DSC işlemlerinin ayrıntılarını alma
işlevi, Get-xDscOperation
bir veya daha fazla bilgisayarda çalışan DSC işlemlerinin sonuçlarını bulmanıza olanak tanır. işlevi, her DSC işlemi tarafından üretilen olay koleksiyonunu içeren bir nesne döndürür. Örneğin, aşağıdaki çıktıda üç komut çalıştırılmıştır. İlki geçti, diğer ikisi başarısız oldu. çıktısı Get-xDscOperation
bu sonuçları özetler.
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...
En Yeni parametresini belirterek yalnızca en son işlemlerin sonuçlarını alabilirsiniz:
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 olaylarının ayrıntılarını alma
cmdlet'i Trace-xDscOperation
bir olay koleksiyonunu, olay türlerini ve belirli bir DSC işleminden oluşturulan ileti çıkışını içeren bir nesne döndürür. Genellikle, kullanarak Get-xDscOperation
herhangi bir işlemde bir hata bulduğunuzda, hataya neden olan olayları bulmak için bu işlemi izlersiniz.
SequenceID
Belirli bir bilgisayar için belirli bir işlemin olaylarını almak için parametresini kullanın.
Örneğin, 9 değerini belirtirseniz SequenceID
, Trace-xDscOperation
son işlemden 9. olan DSC işleminin izlemesini alın:
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.
Bu DSC işleminin olay ayrıntılarını almak için belirli bir DSC işlemine atanan GUID'yi (cmdlet tarafından Get-xDscOperation
döndürülen şekilde) geçirin:
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
Analiz, Trace-xDscOperation
Hata Ayıklama ve İşlem günlüklerindeki olayları topladığınızdan, sizden bu günlükleri etkinleştirmenizi istediğini unutmayın.
Alternatif olarak, çıkışını Trace-xDscOperation
bir değişkene kaydederek olaylar hakkında bilgi toplayabilirsiniz. Belirli bir DSC işleminin tüm olaylarını görüntülemek için aşağıdaki komutları kullanabilirsiniz.
PS C:\DiagnosticsTest> $Trace = Trace-xDscOperation -SequenceID 4
PS C:\DiagnosticsTest> $Trace.Event
Bu, aşağıdaki çıkışta Get-WinEvent
olduğu gibi cmdlet ile aynı sonuçları görüntüler:
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.
İdeal olarak, ilk olarak makinelerinizdeki son birkaç DSC yapılandırma çalıştırmasını listelemek için kullanırsınız Get-xDscOperation
. Bundan sonra, arka planda ne yaptığını keşfetmek için SequenceID veya JobID değerini ile Trace-xDscOperation
belirterek tek bir işlemi inceleyebilirsiniz.
Uzak bilgisayar için olayları alma
ComputerName
Uzak bilgisayarda olay ayrıntılarını almak için cmdlet'in parametresini Trace-xDscOperation
kullanın. Bunu yapmadan önce, uzak bilgisayarda uzaktan yönetime izin vermek için bir güvenlik duvarı kuralı oluşturmanız gerekir:
New-NetFirewallRule -Name "Service RemoteAdmin" -DisplayName "Remote" -Action Allow
Artık çağrısınızda Trace-xDscOperation
bu bilgisayarı belirtebilirsiniz:
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...
Kaynaklarım güncelleştirilmiyor: Önbelleği sıfırlama
DSC altyapısı, verimlilik amacıyla PowerShell modülü olarak uygulanan kaynakları önbelleğe alır. Ancak bu, bir kaynağı yazarken ve aynı anda test ederken sorunlara neden olabilir çünkü DSC, işlem yeniden başlatılana kadar önbelleğe alınmış sürümü yükler. DSC'nin daha yeni sürümü yüklemesini sağlamanın tek yolu, DSC altyapısını barındıran işlemi açıkça sonlandırmaktır.
Benzer şekilde, özel bir kaynak ekledikten ve değiştirdikten sonra komutunu çalıştırdığınızda Start-DscConfiguration
, bilgisayar yeniden başlatılmadığı sürece veya başlatana kadar değişiklik yürütülmeyebilir. Bunun nedeni DSC'nin WMI Sağlayıcısı Ana Bilgisayar İşlemi()WmiPrvSE
içinde çalışması ve genellikle aynı anda çalışan birçok WmiPrvSE örneği olmasıdır. Yeniden başlattığınızda konak işlemi yeniden başlatılır ve önbelleği temizler.
Yapılandırmayı başarıyla geri dönüştürmek ve önbelleği yeniden başlatmadan temizlemek için konak işlemini durdurmanız ve sonra yeniden başlatmanız gerekir. Bu, işlemi tanımladığınız, durduracağınız ve yeniden başlatacağınız her örnek için ayrı ayrı olabilir. Alternatif olarak, PowerShell DSC kaynağını yeniden yüklemek için aşağıda gösterildiği gibi kullanabilirsiniz DebugMode
.
DSC altyapısını barındıran işlemi tanımlamak için DSC altyapısını barındıran işleminin kimliğini WmiPrvSE
listeleyin. Ardından sağlayıcıyı güncelleştirmek için aşağıdaki komutları kullanarak işlemi durdurun WmiPrvSE
ve yeniden çalıştırın 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 kullanma
Ana bilgisayar işlemi yeniden başlatıldığında önbelleği her zaman temizlemek için kullanılacak DebugMode
DSC Yerel Configuration Manager (LCM) yapılandırabilirsiniz. olarak ayarlandığında $true
, altyapının her zaman PowerShell DSC kaynağını yeniden yüklemesine neden olur. Kaynağınızı yazmayı tamamladıktan sonra yeniden olarak ayarlayabilirsiniz $false
ve altyapı modülleri önbelleğe alma davranışına geri döner.
Önbelleğin otomatik olarak nasıl DebugMode
yenilenebileceğini gösteren bir tanıtım aşağıdadır. İlk olarak, varsayılan yapılandırmaya bakalım:
Get-DscLocalConfigurationManager
AllowModuleOverwrite : False
CertificateID :
ConfigurationID :
ConfigurationMode : ApplyAndMonitor
ConfigurationModeFrequencyMins : 30
Credential :
DebugMode : {None}
DownloadManagerCustomData :
DownloadManagerName :
LocalConfigurationManagerState : Ready
RebootNodeIfNeeded : False
RefreshFrequencyMins : 15
RefreshMode : PUSH
PSComputerName :
bunun olduğunu DebugMode
None
görebilirsiniz.
Gösterimi ayarlamak DebugMode
için aşağıdaki PowerShell kaynağını kullanın:
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
}
Şimdi adlı TestProviderDebugMode
bir yapılandırma yazın:
Configuration ConfigTestDebugMode
{
Import-DscResource -Name TestProviderDebugMode
Node localhost
{
TestProviderDebugMode test
{
onlyProperty = "blah"
}
}
}
ConfigTestDebugMode
Dosyanın $env:SystemDrive\OutputFromTestProviderDebugMode.txt
içeriği şeklindedir 1
.
Şimdi aşağıdaki betiği kullanarak sağlayıcı kodunu güncelleştirin:
$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
Bu betik rastgele bir sayı oluşturur ve sağlayıcı kodunu güncelleştirir. DebugMode
false olarak ayarlandığında, dosyanın $env:SystemDrive\OutputFromTestProviderDebugMode.txt
içeriği hiçbir zaman değiştirilmez.
Şimdi yapılandırma betiğinizde olarak ForceModuleImport
ayarlayınDebugMode
:
LocalConfigurationManager
{
DebugMode = "ForceModuleImport"
}
Betiği yeniden çalıştırdığınızda, dosyanın içeriğinin her seferinde farklı olduğunu unutmayın. Denetlemek için komutunu çalıştırabilirsiniz Get-DscConfiguration
. Aşağıdaki kod parçacığı iki çalıştırmanın daha sonucunu gösterir. Betiği çalıştırdığınızda sonuçlarınız farklı olabilir.
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, Windows Pull Server'a kaydolduğunda "beklenmeyen yanıt kodu InternalServerError" döndürür
Windows Pull Server örneğine kaydetmek için bir sunucuya meta yapılandırma uygularken aşağıdaki hatayı alabilirsiniz.
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>
Bu durum, sunucuda trafiği şifrelemek için kullanılan sertifikanın URL'yi çözümlemek için düğüm tarafından kullanılan DNS adından farklı bir ortak ada (CN) sahip olması durumunda ortaya çıkabilir. Düzeltilmiş ada sahip bir sertifika kullanmak için Windows Pull Server örneğini güncelleştirin.
DSC Yapılandırması uygulandıktan sonra Sysprep çalıştırılırken hata oluştu
DSC yapılandırmasını uyguladıktan sonra Windows Server'ı genelleştirmek için Sysprep'i çalıştırmaya çalışırken aşağıdaki hatayı alabilirsiniz.
SYSPRP LaunchDll:Failure occurred while executing 'DscCore.dll,SysPrep_Cleanup', returned error code 0x2
Windows PowerShell Desired State Configuration kullanılarak yapılandırıldıktan sonra sunucuyu genelleştirmek desteklenen bir senaryo değildir. Bunun yerine, Windows Kurulumu'nun Özelleştirme aşaması tamamlandıktan sonra yapılandırmaları Windows'a uygulayın.
Ayrıca Bkz.
Kavramlar
Diğer Kaynaklar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin