Wednesday, August 5, 2020

Pull a configuration to client machine from Pull Server

On client machine:

Let's say some windows 10.


-------------
Demo: Pull Client Configuration
ClientConfig.ps1
----------

param
(
    [Parameter(Mandatory)]
    [string] $ConfigurationServerUrl,

    [Parameter(Mandatory)]
    [string] $ConfigurationServerKey
)

[DSCLocalConfigurationManager()]
configuration PullClientConfiguration
{
    node localhost
    {
        Settings
        {
            AllowModuleOverwrite = $True;
            ConfigurationMode = 'ApplyAndAutoCorrect';
            ConfigurationModeFrequencyMins = 60;
            RefreshMode          = 'Pull';
            RefreshFrequencyMins = 30 ;
            RebootNodeIfNeeded   = $true;
        }

        #specifies an HTTP pull server for configurations
        ConfigurationRepositoryWeb DSCConfigurationServer
        {
            ServerURL          = $Node.ConfigServer;
            RegistrationKey    = $Node.ConfigServerKey;
            AllowUnsecureConnection = $true;
            ConfigurationNames = @("DemoConfig")
        }

        #specifies an HTTP pull server for sending reports
        ReportServerWeb DSCReportServer
        {
            ServerURL          = $Node.ConfigServer;
            RegistrationKey    = $Node.ConfigServerKey;
            AllowUnsecureConnection = $true;
        }

        PartialConfiguration DemoConfig
        {
            Description                     = "DemoConfig"
            ConfigurationSource             = @("[ConfigurationRepositoryWeb]DSCConfigurationServer") 
        }
    }
}

$configParams = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            ConfigServer = $ConfigurationServerUrl
            ConfigServerKey = $ConfigurationServerKey
        }
    )
}

PullClientConfiguration -ConfigurationData $configParams

New-PullClient.ps1
#New-PullClient.ps1
#-------------------
$ErrorActionPreference = 'Stop'
if((Get-ExecutionPolicy) -eq 'Restricted')
{
    throw 'Execution policy should be set atlease to RemoteSigned..'
}
if(-not(Test-WSMan -ErrorAction SilentlyContinue))
{
    Set-WSManQuickConfig -Force 
}

$configServerUrl = 'http://pullserver9392.cloudapp.net/PSDSCPullServer.svc/'
$configServerKey = 'c944ce11-0ffe-467b-bb22-fd1cd2fd769l'

.\ClientConfig.ps1 -ConfigurationServerUrl $configServerUrl `
                    -ConfigurationServerKey $configServerKey


Set-DscLocalConfigurationManager -Path .\PullClientConfiguration -Verbose -Force 

.\New-PullClient.ps1
get-dsclocalconfigurationmanager
Update-DscConfiguration -Wait -Verbose

No comments:

Post a Comment