A DSC jelentéskészítő kiszolgálójának használata

A következőre vonatkozik: Windows PowerShell 5.0

Fontos

A Lekéréses kiszolgáló (Windows feature DSC-Service) a Windows Server egyik támogatott összetevője, de nem tervez új funkciókat vagy képességeket kínálni. Szeretnénk tudni, hogy a DSC újabb verziója már általánosan elérhető, amelyet Azure Policy nevű vendégkonfiguráció egyik funkciója felügyel. A vendégkonfigurációs szolgáltatás egyesíti a DSC-bővítmény, a Azure Automation State Configuration és az ügyfél visszajelzései által leggyakrabban kért funkciókat. A vendégkonfiguráció a hibrid gépek Arc-kompatibilis kiszolgálókon keresztüli támogatását is magában foglalja.

A csomópont helyi Configuration Manager (LCM) konfigurálható úgy, hogy jelentéseket küldjön a konfigurációs állapotáról egy lekéréses kiszolgálónak, amely lekérdezhető az adatok lekéréséhez. Minden alkalommal, amikor a csomópont ellenőrzi és alkalmazza a konfigurációt, jelentést küld a jelentéskészítő kiszolgálónak. Ezek a jelentések a kiszolgálón található adatbázisban vannak tárolva, és a jelentéskészítési webszolgáltatás meghívásával kérhetők le. Minden jelentés olyan információkat tartalmaz, mint az alkalmazott konfigurációk és azok sikerességéről, a felhasznált erőforrásokról, a megjelenő hibákról, valamint a kezdési és befejezési időpontokról.

Csomópont konfigurálása jelentések küldésére

Az LCM konfigurálásáról a Helyi Configuration Manager konfigurálásával kapcsolatos információkért olvassa el a csomópontot, hogy küldjön jelentéseket egy kiszolgálónak a ReportServerWeb blokk használatával. A kiszolgálót, amelyre a csomópont jelentéseket küld, webes lekéréses kiszolgálóként kell beállítani (nem küldhet jelentéseket SMB-megosztásnak). A lekéréses kiszolgáló beállításával kapcsolatos információkért lásd: DSC webes lekéréses kiszolgáló beállítása. A jelentéskészítő kiszolgáló lehet ugyanaz a szolgáltatás, amelyből a csomópont lekéri a konfigurációkat, és erőforrásokat kér le, vagy egy másik szolgáltatás lehet.

A ReportServerWeb blokkban meg kell adnia a lekérési szolgáltatás URL-címét és a kiszolgáló számára ismert regisztrációs kulcsot.

A következő konfiguráció konfigurál egy csomópontot, hogy lekérje a konfigurációkat egy szolgáltatásból, és jelentéseket küldjön egy másik kiszolgálón lévő szolgáltatásnak.

[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

Az alábbi konfiguráció konfigurál egy csomópontot úgy, hogy egyetlen kiszolgálót használjon konfigurációkhoz, erőforrásokhoz és jelentésekhez.

[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

Megjegyzés

A lekéréses kiszolgáló beállításakor tetszőleges nevet adhat a webszolgáltatásnak, de a ServerURL tulajdonságnak meg kell egyeznie a szolgáltatás nevével.

Jelentésadatok lekérése

A lekéréses kiszolgálónak küldött jelentések be lesznek adva egy adatbázisba a kiszolgálón. A jelentések a webszolgáltatás hívásain keresztül érhetők el. Ha egy adott csomópont jelentéseit szeretné lekérni, küldjön egy HTTP-kérést a jelentés webszolgáltatásának a következő űrlapon:

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

Hol MyNodeAgentId található annak a csomópontnak az AgentId azonosítója, amelyhez jelentéseket szeretne lekérni. A csomópont ügynökazonosítóját az adott csomópont Get-DscLocalConfigurationManager hívásával szerezheti be.

A jelentések JSON-objektumok tömbjeként jelennek meg.

A következő szkript a futtatás alapjául szolgáló csomópont jelentéseit adja vissza:

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
}

Jelentésadatok megtekintése

Ha egy változót a GetReport függvény eredményére állít be, a visszaadott tömb egyik elemében megtekintheti az egyes mezőket:

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

Alapértelmezés szerint a jelentések a JobID szerint vannak rendezve. A legutóbbi jelentés lekéréséhez rendezheti a jelentéseket a StartTime tulajdonság csökkenő értékével, majd lekérheti a tömb első elemét:

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

Figyelje meg, hogy a StatusData tulajdonság egy több tulajdonsággal rendelkező objektum. A jelentési adatok nagy része itt található. Vizsgáljuk meg a legutóbbi jelentés StatusData tulajdonságának egyes mezőit:

$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

Ez többek között azt mutatja, hogy a legutóbbi konfiguráció két erőforrást hívott, és hogy az egyik a kívánt állapotban volt, és az egyik nem volt. Olvashatóbb kimenetet kaphat csak a ResourcesNotInDesiredState tulajdonságból:

$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

Vegye figyelembe, hogy ezek a példák arra szolgálnak, hogy képet kapjon arról, hogy mit tehet a jelentésadatokkal. A JSON PowerShellben való használatáról a JSON és a PowerShell használatával való játékról szóló cikkben olvashat bővebben.

Lásd még:

A helyi Configuration Manager konfigurálása

DSC webes lekéréses kiszolgáló beállítása

Lekérési ügyfél beállítása konfigurációs nevekkel