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:

  1. 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.
  2. 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/Analytichata ayıklama kanalı ise şeklindedir Microsoft-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 $SeparateDscOperationsilk 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-DscConfigurationgibi 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-xDscOperationherhangi 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-xDscOperationbu 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 WmiPrvSElisteleyin. 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 DebugModeNonegö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ı TestProviderDebugModebir 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