Bagikan melalui


Menggunakan server laporan DSC

Berlaku Untuk: Windows PowerShell 5.0

Penting

Pull Server (Windows Feature DSC-Service) adalah komponen Windows Server yang didukung namun tidak ada rencana untuk menawarkan fitur atau kemampuan baru. kami ingin Anda tahu bahwa versi DSC yang lebih baru sekarang tersedia secara umum, dikelola oleh fitur Azure Policy konfigurasi tamu bernama. Layanan konfigurasi tamu menggabungkan fitur Ekstensi DSC, Konfigurasi Status Azure Automation, dan fitur yang paling sering diminta dari umpan balik pelanggan. Konfigurasi tamu juga mencakup dukungan komputer hibrid melalui server berkemampuan Arc.

Local Configuration Manager (LCM) dari node dapat dikonfigurasi untuk mengirim laporan tentang status konfigurasinya ke server penarikan yang kemudian dapat dikueri untuk mengambil data tersebut. Setiap kali simpul memeriksa dan menerapkan konfigurasi, simpul mengirimkan laporan ke server laporan. Laporan ini disimpan dalam database di server, dan dapat diambil dengan memanggil layanan web pelaporan. Setiap laporan berisi informasi seperti konfigurasi apa yang diterapkan dan apakah berhasil, sumber daya yang digunakan, kesalahan apa pun yang dilemparkan, dan waktu mulai dan selesai.

Mengonfigurasi simpul untuk mengirim laporan

Anda memberi tahu simpul untuk mengirim laporan ke server dengan menggunakan blok ReportServerWeb di konfigurasi LCM simpul (untuk informasi tentang mengonfigurasi LCM, lihat Mengonfigurasi Configuration Manager Lokal). Server tempat simpul mengirim laporan harus disiapkan sebagai server penarikan web (Anda tidak dapat mengirim laporan ke berbagi SMB). Untuk informasi tentang menyiapkan server penarikan, lihat Menyiapkan server penarikan web DSC. Server laporan dapat menjadi layanan yang sama dari mana simpul menarik konfigurasi dan mendapatkan sumber daya, atau bisa menjadi layanan yang berbeda.

Di blok ReportServerWeb , Anda menentukan URL layanan penarikan dan kunci pendaftaran yang diketahui oleh server.

Konfigurasi berikut mengonfigurasi simpul untuk menarik konfigurasi dari satu layanan, dan mengirim laporan ke layanan di server yang berbeda.

[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

Konfigurasi berikut mengonfigurasi simpul untuk menggunakan satu server untuk konfigurasi, sumber daya, dan pelaporan.

[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

Catatan

Anda dapat memberi nama layanan web apa pun yang Anda inginkan saat menyiapkan server penarikan, tetapi properti ServerURL harus cocok dengan nama layanan.

Mendapatkan data laporan

Laporan yang dikirim ke server penarikan dimasukkan ke dalam database di server. Laporan tersedia melalui panggilan ke layanan web. Untuk mengambil laporan untuk simpul tertentu, kirim permintaan HTTP ke layanan web laporan dalam formulir berikut:

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

Di mana MyNodeAgentId adalah AgentId dari simpul yang ingin Anda dapatkan laporannya. Anda bisa mendapatkan AgentID untuk node dengan memanggil Get-DscLocalConfigurationManager pada node tersebut.

Laporan dikembalikan sebagai array objek JSON.

Skrip berikut mengembalikan laporan untuk simpul tempat eksekusinya:

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
}

Menampilkan data laporan

Jika Anda mengatur variabel ke hasil fungsi GetReport , Anda dapat melihat bidang individual dalam elemen array yang dikembalikan:

$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       : {}

Secara default, laporan diurutkan menurut JobID. Untuk mendapatkan laporan terbaru, Anda bisa mengurutkan laporan dengan properti StartTime turun, lalu mendapatkan elemen pertama dari array:

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

Perhatikan bahwa properti StatusData adalah objek dengan sejumlah properti. Di sinilah banyak data pelaporan berada. Mari kita lihat bidang individual properti StatusData untuk laporan terbaru:

$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

Antara lain, ini menunjukkan bahwa konfigurasi terbaru yang disebut dua sumber daya, dan salah satunya dalam keadaan yang diinginkan, dan salah satunya tidak. Anda bisa mendapatkan output yang lebih mudah dibaca hanya dari properti ResourcesNotInDesiredState :

$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

Perhatikan bahwa contoh-contoh ini dimaksudkan untuk memberi Anda gambaran tentang apa yang dapat Anda lakukan dengan data laporan. Untuk pengenalan tentang bekerja dengan JSON di PowerShell, lihat Bermain dengan JSON dan PowerShell.

Lihat juga

Mengonfigurasi Configuration Manager Lokal

Menyiapkan server penarikan web DSC

Menyiapkan klien penarikan menggunakan nama konfigurasi