DSC rapor sunucusu kullanma

Şunlar için geçerlidir: Windows PowerShell 5.0

Önemli

Çekme Sunucusu (Windows Özelliği DSC-Hizmeti), Windows Server'ın desteklenen bir bileşenidir, ancak yeni özellik veya özellikler sunma planı yoktur. DSC'nin daha yeni bir sürümünün artık genel kullanıma sunulduğundan ve konuk yapılandırma adlı Azure İlkesi özelliği tarafından yönetildiğini bilmenizi isteriz. Konuk yapılandırma hizmeti DSC Uzantısı, Azure Otomasyonu State Configuration ve müşteri geri bildirimlerinden en sık istenen özellikleri birleştirir. Konuk yapılandırması, Arc özellikli sunucular aracılığıyla karma makine desteği de içerir.

Bir düğümün Yerel Configuration Manager (LCM), yapılandırma durumuyla ilgili raporları daha sonra bu verileri almak için sorgulanabilecek bir çekme sunucusuna gönderecek şekilde yapılandırılabilir. Düğüm her yapılandırmayı denetlediğinden ve uyguladığında rapor sunucusuna bir rapor gönderir. Bu raporlar sunucudaki bir veritabanında depolanır ve raporlama web hizmeti çağrılarak alınabilir. Her rapor hangi yapılandırmaların uygulandığı ve başarılı olup olmadıkları, kullanılan kaynaklar, atılan hatalar ve başlangıç ve bitiş süreleri gibi bilgileri içerir.

Raporları göndermek için düğüm yapılandırma

Düğümün LCM yapılandırmasında ReportServerWeb bloğunu kullanarak bir düğüme sunucuya rapor göndermesini söylersiniz (LCM'yi yapılandırma hakkında bilgi için bkz. Yerel Configuration Manager Yapılandırma). Düğümün raporları gönderdiği sunucu web çekme sunucusu olarak ayarlanmalıdır (SMB paylaşımına rapor gönderemezsiniz). Çekme sunucusu ayarlama hakkında bilgi için bkz. DSC web çekme sunucusu ayarlama. Rapor sunucusu, düğümün yapılandırmaları çektiği ve kaynakları aldığı hizmet olabileceği gibi farklı bir hizmet de olabilir.

ReportServerWeb bloğunda, çekme hizmetinin URL'sini ve sunucu tarafından bilinen bir kayıt anahtarını belirtirsiniz.

Aşağıdaki yapılandırma, bir hizmetten yapılandırmaları çekmek ve raporları farklı bir sunucudaki bir hizmete göndermek için bir düğüm yapılandırılır.

[DSCLocalConfigurationManager()]
configuration ReportClientConfig
{
    Node localhost
    {
        Settings
        {
            RefreshMode          = 'Pull'
            RefreshFrequencyMins = 30
            RebootNodeIfNeeded   = $true
        }

        ConfigurationRepositoryWeb CONTOSO-PullSrv
        {
            ServerURL          = 'https://CONTOSO-PULL:8080/PSDSCPullServer.svc'
            RegistrationKey    = 'bbb9778f-43f2-47de-b61e-a0daff474c6d'
            ConfigurationNames = @('ClientConfig')
        }

        ReportServerWeb CONTOSO-ReportSrv
        {
            ServerURL               = 'http://CONTOSO-REPORT:8080/PSDSCPullServer.svc'
            RegistrationKey         = 'ba39daaa-96c5-4f2f-9149-f95c46460faa'
            AllowUnsecureConnection = $true
        }
    }
}

ReportClientConfig

Aşağıdaki yapılandırma, yapılandırmalar, kaynaklar ve raporlama için tek bir sunucu kullanmak üzere bir düğüm yapılandırılır.

[DSCLocalConfigurationManager()]
configuration PullClientConfig
{
    Node localhost
    {
        Settings
        {
            RefreshMode = 'Pull'
            RefreshFrequencyMins = 30
            RebootNodeIfNeeded = $true
        }

        ConfigurationRepositoryWeb CONTOSO-PullSrv
        {
            ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
            RegistrationKey = 'fbc6ef09-ad98-4aad-a062-92b0e0327562'
        }



        ReportServerWeb CONTOSO-ReportSrv
        {
            ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
        }
    }
}
PullClientConfig

Not

Bir çekme sunucusu ayarlarken web hizmetini istediğiniz şekilde adlandırabilirsiniz, ancak ServerURL özelliğinin hizmet adıyla eşleşmesi gerekir.

Rapor verilerini alma

Çekme sunucusuna gönderilen raporlar sunucudaki bir veritabanına girilir. Raporlar, web hizmetine yapılan çağrılar aracılığıyla kullanılabilir. Belirli bir düğüme ilişkin raporları almak için rapor web hizmetine aşağıdaki biçimde bir HTTP isteği gönderin:

http://CONTOSO-REPORT:8080/PSDSCReportServer.svc/Nodes(AgentId='MyNodeAgentId')/Reports

Raporları almak istediğiniz düğümün AgentId değeri nerededir MyNodeAgentId ? Bu düğümde Get-DscLocalConfigurationManager çağrısı yaparak bir düğüm için AgentID değerini alabilirsiniz.

Raporlar bir JSON nesneleri dizisi olarak döndürülür.

Aşağıdaki betik, üzerinde çalıştırıldığı düğümün raporlarını döndürür:

function GetReport
{
    param
    (
        $AgentId = "$((glcm).AgentId)",
        $serviceURL = "http://CONTOSO-REPORT:8080/PSDSCPullServer.svc"
    )

    $invokeWebRequestSplat = @{
        Uri = "$serviceURL/Nodes(AgentId= '$AgentId')/Reports"
        ContentType = "application/json;odata=minimalmetadata;streaming=true;charset=utf-8"
        UseBasicParsing = $true
        Headers = @{Accept = "application/json"; ProtocolVersion = "2.0"}
        ErrorAction = 'SilentlyContinue'
        ErrorVariable = 'ev'
    }

    $request = Invoke-WebRequest @invokeWebRequestSplat
    $object = ConvertFrom-Json $request.content
    return $object.value
}

Rapor verilerini görüntüleme

GetReport işlevinin sonucuna bir değişken ayarlarsanız, döndürülen dizinin bir öğesindeki tek tek alanları görüntüleyebilirsiniz:

$reports = GetReport
$reports[1]
JobId                : 019dfbe5-f99f-11e5-80c6-001dd8b8065c
OperationType        : Consistency
RefreshMode          : Pull
Status               : Success
ReportFormatVersion  : 2.0
ConfigurationVersion : 2.0.0
StartTime            : 04/03/2016 06:21:43
EndTime              : 04/03/2016 06:22:04
RebootRequested      : False
Errors               : {}
StatusData           : {{"StartDate":"2016-04-03T06:21:43.7220000-07:00","IPV6Addresses":["2001:4898:d8:f2f2:852b:b255:b071:283b","fe80::852b:b255:b071
                       :283b%12","::2000:0:0:0","::1","::2000:0:0:0"],"DurationInSeconds":"21","JobID":"{019DFBE5-F99F-11E5-80C6-001DD8B8065C}","Curren
                       tChecksum":"A7797571CB9C3AF4D74C39A0FDA11DAF33273349E1182385528FFC1E47151F7F","MetaData":"Author: configAuthor; Name:
                       Sample_ArchiveFirewall; Version: 2.0.0; GenerationDate: 04/01/2016 15:23:30; GenerationHost: CONTOSO-PullSrv;","RebootRequested":"False
                       ","Status":"Success","IPV4Addresses":["10.240.179.151","127.0.0.1"],"LCMVersion":"2.0","ResourcesNotInDesiredState":[{"SourceInf
                       o":"C:\\ReportTest\\Sample_xFirewall_AddFirewallRule.ps1::23::9::xFirewall","ModuleName":"xNetworking","DurationInSeconds":"8.785",
                       "InstanceName":"Firewall","StartDate":"2016-04-03T06:21:56.4650000-07:00","ResourceName":"xFirewall","ModuleVersion":"2.7.0.0","
                       RebootRequested":"False","ResourceId":"[xFirewall]Firewall","ConfigurationName":"Sample_ArchiveFirewall","InDesiredState":"False
                       "}],"NumberOfResources":"2","Type":"Consistency","HostName":"CONTOSO-PULLCLI","ResourcesInDesiredState":[{"SourceInfo":"C:\\ReportTest\\Sample_xFirewall_AddFirewallRule.ps1::16::9::Archive","ModuleName":"PSDesiredStateConfiguration","DurationInSeconds":"1.848",
                       "InstanceName":"ArchiveExample","StartDate":"2016-04-03T06:21:56.4650000-07:00","ResourceName":"Archive","ModuleVersion":"1.1","
                       RebootRequested":"False","ResourceId":"[Archive]ArchiveExample","ConfigurationName":"Sample_ArchiveFirewall","InDesiredState":"T
                       rue"}],"MACAddresses":["00-1D-D8-B8-06-5C","00-00-00-00-00-00-00-E0"],"MetaConfiguration":{"AgentId":"52DA826D-00DE-4166-8ACB-73F2B46A7E00",
                       "ConfigurationDownloadManagers":[{"SourceInfo":"C:\\ReportTest\\LCMConfig.ps1::14::9::ConfigurationRepositoryWeb","A
                       llowUnsecureConnection":"True","ServerURL":"http://CONTOSO-PullSrv:8080/PSDSCPullServer.svc","RegistrationKey":"","ResourceId":"[Config
                       urationRepositoryWeb]CONTOSO-PullSrv","ConfigurationNames":["ClientConfig"]}],"ActionAfterReboot":"ContinueConfiguration","LCMCo
                       mpatibleVersions":["1.0","2.0"],"LCMState":"Idle","ResourceModuleManagers":[],"ReportManagers":[{"AllowUnsecureConnection":"True
                       ","RegistrationKey":"","ServerURL":"http://CONTOSO-PullSrv:8080/PSDSCPullServer.svc","ResourceId":"[ReportServerWeb]CONTOSO-PullSrv","S
                       ourceInfo":"C:\\ReportTest\\LCMConfig.ps1::24::9::ReportServerWeb"}],"StatusRetentionTimeInDays":"10","LCMVersion":"2.0","Config
                       urationMode":"ApplyAndMonitor","RefreshFrequencyMins":"30","RebootNodeIfNeeded":"True","RefreshMode":"Pull","DebugMode":["NONE"]
                       ,"LCMStateDetail":"","AllowModuleOverwrite":"False","ConfigurationModeFrequencyMins":"15"},"Locale":"en-US","Mode":"Pull"}}
AdditionalData       : {}

Varsayılan olarak, raporlar JobID'ye göre sıralanır. En son raporu almak için, raporları StartTime özelliğine göre azalan düzende sıralayabilir ve ardından dizinin ilk öğesini alabilirsiniz:

$reportsByStartTime = $reports | Sort-Object {$_."StartTime" -as [DateTime] } -Descending
$reportMostRecent = $reportsByStartTime[0]

StatusData özelliğinin bir dizi özelliğe sahip bir nesne olduğuna dikkat edin. Raporlama verilerinin büyük bir kısmı buradadır. Şimdi en son raporun StatusData özelliğinin tek tek alanlarına bakalım:

$statusData = $reportMostRecent.StatusData | ConvertFrom-Json
$statusData
StartDate                  : 2016-04-04T11:21:41.2990000-07:00
IPV6Addresses              : {2001:4898:d8:f2f2:852b:b255:b071:283b, fe80::852b:b255:b071:283b%12, ::2000:0:0:0, ::1...}
DurationInSeconds          : 25
JobID                      : {135D230E-FA92-11E5-80C6-001DD8B8065C}
CurrentChecksum            : A7797571CB9C3AF4D74C39A0FDA11DAF33273349E1182385528FFC1E47151F7F
MetaData                   : Author: configAuthor; Name: Sample_ArchiveFirewall; Version: 2.0.0; GenerationDate: 04/01/2016 15:23:30; GenerationHost:
                             CONTOSO-PullSrv;
RebootRequested            : False
Status                     : Success
IPV4Addresses              : {10.240.179.151, 127.0.0.1}
LCMVersion                 : 2.0
ResourcesNotInDesiredState : {@{SourceInfo=C:\ReportTest\Sample_xFirewall_AddFirewallRule.ps1::23::9::xFirewall; ModuleName=xNetworking;
                             DurationInSeconds=10.725; InstanceName=Firewall; StartDate=2016-04-04T11:21:55.7200000-07:00; ResourceName=xFirewall;
                             ModuleVersion=2.7.0.0; RebootRequested=False; ResourceId=[xFirewall]Firewall; ConfigurationName=Sample_ArchiveFirewall;
                             InDesiredState=False}}
NumberOfResources          : 2
Type                       : Consistency
HostName                   : CONTOSO-PULLCLI
ResourcesInDesiredState    : {@{SourceInfo=C:\ReportTest\Sample_xFirewall_AddFirewallRule.ps1::16::9::Archive; ModuleName=PSDesiredStateConfiguration;
                             DurationInSeconds=2.672; InstanceName=ArchiveExample; StartDate=2016-04-04T11:21:55.7200000-07:00; ResourceName=Archive;
                             ModuleVersion=1.1; RebootRequested=False; ResourceId=[Archive]ArchiveExample; ConfigurationName=Sample_ArchiveFirewall;
                             InDesiredState=True}}
MACAddresses               : {00-1D-D8-B8-06-5C, 00-00-00-00-00-00-00-E0}
MetaConfiguration          : @{AgentId=52DA826D-00DE-4166-8ACB-73F2B46A7E00; ConfigurationDownloadManagers=System.Object[];
                             ActionAfterReboot=ContinueConfiguration; LCMCompatibleVersions=System.Object[]; LCMState=Idle;
                             ResourceModuleManagers=System.Object[]; ReportManagers=System.Object[]; StatusRetentionTimeInDays=10; LCMVersion=2.0;
                             ConfigurationMode=ApplyAndMonitor; RefreshFrequencyMins=30; RebootNodeIfNeeded=True; RefreshMode=Pull;
                             DebugMode=System.Object[]; LCMStateDetail=; AllowModuleOverwrite=False; ConfigurationModeFrequencyMins=15}
Locale                     : en-US
Mode                       : Pull

Diğer şeylerin yanı sırada, bu, en son yapılandırmanın iki kaynak olarak adlandırıldığını ve bunlardan birinin istenen durumda olduğunu ve bunlardan birinin olmadığını gösterir. Yalnızca ResourcesNotInDesiredState özelliğinin daha okunabilir bir çıkışını alabilirsiniz:

$statusData.ResourcesInDesiredState
SourceInfo        : C:\ReportTest\Sample_xFirewall_AddFirewallRule.ps1::16::9::Archive
ModuleName        : PSDesiredStateConfiguration
DurationInSeconds : 2.672
InstanceName      : ArchiveExample
StartDate         : 2016-04-04T11:21:55.7200000-07:00
ResourceName      : Archive
ModuleVersion     : 1.1
RebootRequested   : False
ResourceId        : [Archive]ArchiveExample
ConfigurationName : Sample_ArchiveFirewall
InDesiredState    : True

Bu örneklerin size rapor verileriyle neler yapabileceğiniz hakkında fikir vermek için tasarlandığını unutmayın. PowerShell'de JSON ile çalışmaya giriş için bkz. JSON ve PowerShell ile yürütme.

Ayrıca Bkz.

Yerel Configuration Manager Yapılandırma

DSC web çekme sunucusu ayarlama

Yapılandırma adlarını kullanarak çekme istemcisi ayarlama