Een DSC SMB-pull-server instellenSetting up a DSC SMB pull server

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Belangrijk

De Pull-Server (Windows-functie DSC-Service) is een ondersteunde onderdeel van Windows Server maar er zijn geen plannen om nieuwe functies en mogelijkheden bieden.The Pull Server (Windows Feature DSC-Service) is a supported component of Windows Server however there are no plans to offer new features or capabilities. Het verdient aanbeveling om te beginnen met het overstappen clients beheerd Azure Automation DSC (inclusief functies dan Pull-Server op Windows Server) of een van de community-oplossingen die zijn opgenomen hier.It is recommended to begin transitioning managed clients to Azure Automation DSC (includes features beyond Pull Server on Windows Server) or one of the community solutions listed here.

Een DSC SMB pull-server is een computer die als host fungeert voor SMB-bestandsshares die DSC-configuratiebestanden en DSC-resources beschikbaar zijn voor doelknooppunten maken wanneer deze knooppunten om ze vragen.A DSC SMB pull server is a computer hosting SMB file shares that make DSC configuration files and DSC resources available to target nodes when those nodes ask for them.

Voor het gebruik van een SMB-pull-server voor DSC, hebt u naar:To use an SMB pull server for DSC, you have to:

  • Instellen van een SMB-bestandsshare op een server met PowerShell 4.0 of hogerSet up an SMB file share on a server running PowerShell 4.0 or higher
  • Een client met PowerShell 4.0 of hoger om op te halen uit dat SMB-share configurerenConfigure a client running PowerShell 4.0 or higher to pull from that SMB share

Een SMB-bestandsshare maken met behulp van de resource xSmbShareUsing the xSmbShare resource to create an SMB file share

Er zijn een aantal manieren om een SMB-bestandsshare instellen, maar laten we kijken hoe u dit doen kunt met behulp van DSC.There are a number of ways to set up an SMB file share, but let's look at how you can do this by using DSC.

De resource xSmbShare installerenInstall the xSmbShare resource

Roep de Install-Module cmdlet voor het installeren van de xSmbShare module.Call the Install-Module cmdlet to install the xSmbShare module.

Notitie

Install-Module is opgenomen in de PowerShellGet module die is opgenomen in PowerShell 5.0.Install-Module is included in the PowerShellGet module, which is included in PowerShell 5.0. U kunt downloaden de PowerShellGet -module voor PowerShell 3.0 en 4.0 op PackageManagement PowerShell-Modules Preview.You can download the PowerShellGet module for PowerShell 3.0 and 4.0 at PackageManagement PowerShell Modules Preview. De xSmbShare bevat de DSC-resource xSmbShare, die kan worden gebruikt om een SMB-bestandsshare te maken.The xSmbShare contains the DSC resource xSmbShare, which can be used to create an SMB file share.

Maak de map- en -shareCreate the directory and file share

De volgende configuratie maakt gebruik van de bestand resource die u wilt maken van de map voor de share en de xSmbShare resource voor het instellen van de SMB-share:The following configuration uses the File resource to create the directory for the share and the xSmbShare resource to set up the SMB share:

Configuration SmbShare
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'admininstrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }
    }
}

De configuratie maakt de map C:\DscSmbShare als dit niet al bestaat en wordt die map als een SMB-bestandsshare.The configuration creates the directory C:\DscSmbShare if it doesn't already exists, and then uses that directory as an SMB file share. FullAccess moet worden gegeven aan een account dat moet schrijven of verwijderen van de bestandsshare en ReadAccess moet krijgen tot alle client-knooppunten die configuraties en/of DSC-resources van de share (dit is omdat krijgen DSC wordt uitgevoerd als het systeem-account standaard, zodat de computer zelf toegang hebben tot de share).FullAccess should be given to any account that needs to write to or delete from the file share, and ReadAccess must be given to any client nodes that get configurations and/or DSC resources from the share ( this is because DSC runs as the system account by default, so the computer itself has to have access to the share).

Geeft toegang tot bestandssysteem naar de pull-clientGive file system access to the pull client

Geeft ReadAccess naar een client kan knooppunt dat knooppunt toegang tot de SMB-share, maar niet aan de bestanden of mappen in die share.Giving ReadAccess to a client node allows that node to access the SMB share, but not to files or folders within that share. U moet expliciet client knooppunten toegang verlenen tot de SMB-share-map en submappen.You have to explicitly grant client nodes access to the SMB share folder and sub-folders. We kunnen dit doen met DSC door toe te voegen met behulp van de cNtfsPermissionEntry -resource, die is opgenomen in de CNtfsAccessControl module.We can do this with DSC by adding using the cNtfsPermissionEntry resource, which is contained in the CNtfsAccessControl module. De volgende configuratie voegt een cNtfsPermissionEntry blok dat ReadAndExecute toegang wordt verleend aan de pull-client:The following configuration adds a cNtfsPermissionEntry block that grants ReadAndExecute access to the pull client:

Configuration DSCSMB
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare
    Import-DscResource -ModuleName cNtfsAccessControl

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'DscSmbShare'
            FullAccess = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }

        cNtfsPermissionEntry PermissionSet1
        {
            Ensure = 'Present'
            Path = 'C:\DSCSMB'
            Principal = 'myDomain\Contoso-Server$'
            AccessControlInformation = @(
                cNtfsAccessControlInformation
                {
                    AccessControlType = 'Allow'
                    FileSystemRights = 'ReadAndExecute'
                    Inheritance = 'ThisFolderSubfoldersAndFiles'
                    NoPropagateInherit = $false
                }
            )
            DependsOn = '[File]CreateFolder'
        }
    }
}

Het plaatsen van configuraties en resourcesPlacing configurations and resources

Sla configuratie MOF-bestanden en/of DSC-resources die u wilt dat knooppunten van de client om op te halen in de SMB-share-map.Save any configuration MOF files and/or DSC resources that you want client nodes to pull in the SMB share folder.

Een MOF-configuratiebestand moet de naam ConfigurationID.mof, waar ConfigurationID is de waarde van de ConfigurationID eigenschap van het doelknooppunt LCM.Any configuration MOF file must be named ConfigurationID.mof, where ConfigurationID is the value of the ConfigurationID property of the target node's LCM. Zie voor meer informatie over het instellen van pull-clients instellen van een pull-client met behulp van configuratie-ID.For more information about setting up pull clients, see Setting up a pull client using configuration ID.

Notitie

Als u een SMB-pull-server, moet u configuratie-ID's gebruiken.You must use configuration IDs if you are using an SMB pull server. Namen worden niet ondersteund voor SMB.Configuration names are not supported for SMB.

Elke resource-module moet worden ingepakt en met de naam op basis van de het volgende patroon {Module Name}_{Module Version}.zip.Each resource module needs to be zipped and named according the the following pattern {Module Name}_{Module Version}.zip. Bijvoorbeeld, een module met de naam xWebAdminstration met de moduleversie van een van 3.1.2.0 zou worden met de naam 'xWebAdministration_3.2.1.0.zip'.For example, a module named xWebAdminstration with a module version of 3.1.2.0 would be named 'xWebAdministration_3.2.1.0.zip'. Elke versie van een module moet worden opgenomen in een enkel zip-bestand.Each version of a module must be contained in a single zip file. Omdat er slechts één versie van een resource in elke zip-bestand dat de indeling van de module toegevoegd in WMF 5.0 met de ondersteuning voor meerdere moduleversies van de in één map niet wordt ondersteund.Since there is only a single version of a resource in each zip file the module format added in WMF 5.0 with support for multiple module versions in a single directory is not supported. Dit betekent dat voordat verpakking van DSC-resource-modules voor gebruik met pull-server moet u een kleine wijziging aanbrengen in de mapstructuur.This means that before packaging up DSC resource modules for use with pull server you need to make a small change to the directory structure. De standaardnotatie van modules met DSC-resource in WMF 5.0 is {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.The default format of modules containing DSC resource in WMF 5.0 is {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\. Pakketten voor de pull-server te verwijderen en daarna de {Module version} map, zodat het pad wordt {Module Folder}\DscResources\{DSC Resource Folder}\.Before packaging up for the pull server simply remove the {Module version} folder so the path becomes {Module Folder}\DscResources\{DSC Resource Folder}\. Met deze wijziging, zip-de map, zoals hierboven beschreven en plaatst deze zip-bestanden op de SMB-share-map.With this change, zip the folder as described above and place these zip files in the SMB share folder.

Het maken van de controlesom MOFCreating the MOF checksum

Een MOF-configuratiebestand moet worden gekoppeld aan een bestand controlesom zodat een LCM op een doelknooppunt kan de configuratie valideren.A configuration MOF file needs to be paired with a checksum file so that an LCM on a target node can validate the configuration. Aanroepen voor het maken van een controlesom, de New-DSCCheckSum cmdlet.To create a checksum, call the New-DSCCheckSum cmdlet. De cmdlet voert een Path parameter waarmee de map waarin de configuratie van de MOF zich bevindt.The cmdlet takes a Path parameter that specifies the folder where the configuration MOF is located. De cmdlet maakt een controlesom-bestand met de naam ConfigurationMOFName.mof.checksum, waarbij ConfigurationMOFName is de naam van de mof-configuratiebestand.The cmdlet creates a checksum file named ConfigurationMOFName.mof.checksum, where ConfigurationMOFName is the name of the configuration mof file. Als er meer dan één configuratie MOF-bestanden in de opgegeven map, wordt een controlesom gemaakt voor elke configuratie in de map.If there are more than one configuration MOF files in the specified folder, a checksum is created for each configuration in the folder.

Het bestand controlesom moet aanwezig zijn in dezelfde map als het MOF-configuratiebestand ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration standaard), en hebben dezelfde naam als de .checksum extensie toegevoegd.The checksum file must be present in the same directory as the configuration MOF file ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration by default), and have the same name with the .checksum extension appended.

Notitie

Als u het MOF-configuratiebestand op geen enkele manier wijzigt, moet u ook het bestand controlesom opnieuw maken.If you change the configuration MOF file in any way, you must also recreate the checksum file.

Instellen van een pull-client voor SMBSetting up a pull client for SMB

Als u een client die wordt opgehaald van configuraties en/of bronnen van een SMB-share instelt, configureert u van de client lokaal Configuration Manager (LCM) met ConfigurationRepositoryShare en ResourceRepositoryShare blokken die de share van die voor het ophalen van configuraties en DSC-resources opgeven.To set up a client that pulls configurations and/or resources from an SMB share, you configure the client's Local Configuration Manager (LCM) with ConfigurationRepositoryShare and ResourceRepositoryShare blocks that specify the share from which to pull configurations and DSC resources.

Zie voor meer informatie over het configureren van de LCM instellen van een pull-client met behulp van configuratie-ID.For more information about configuring the LCM, see Setting up a pull client using configuration ID.

Notitie

Voor het gemak in dit voorbeeld wordt de PSDscAllowPlainTextPassword om toe te staan een wachtwoord als leesbare tekst aan te geven de referentie parameter.For simplicity, this example uses the PSDscAllowPlainTextPassword to allow passing a plaintext password to the Credential parameter. Zie voor meer informatie over het doorgeven van referenties veiliger Referentieopties in de configuratiegegevens.For information about passing credentials more securely, see Credentials Options in Configuration Data.

U moet geven een ConfigurationID in de instellingen blokkeren van een metaconfiguration voor een SMB-pull-server, zelfs als u alleen binnenhalen van resources.You MUST specify a ConfigurationID in the Settings block of a metaconfiguration for an SMB pull server, even if you are only pulling resources.

$secpasswd = ConvertTo-SecureString “Pass1Word” -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“TestUser”, $secpasswd)

[DSCLocalConfigurationManager()]
configuration SmbCredTest
{
    Node $AllNodes.NodeName
    {
        Settings
        {
            RefreshMode = 'Pull'
            RefreshFrequencyMins = 30
            RebootNodeIfNeeded = $true
            ConfigurationID    = '16db7357-9083-4806-a80c-ebbaf4acd6c1'
        }

         ConfigurationRepositoryShare SmbConfigShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds
        }

        ResourceRepositoryShare SmbResourceShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds

        }
    }
}

$ConfigurationData = @{
    AllNodes = @(
        @{
            #the "*" means "all nodes named in ConfigData" so we don't have to repeat ourselves
            NodeName="localhost"
            PSDscAllowPlainTextPassword = $true
        })
}

BevestigingenAcknowledgements

Speciale dankzij het volgende:Special thanks to the following:

  • Mike F. Robbins, waarvan berichten over het gebruik van SMB voor DSC geholpen informeren over de inhoud in dit onderwerp.Mike F. Robbins, whose posts on using SMB for DSC helped inform the content in this topic. Zijn blog loopt Mike F Robbins.His blog is at Mike F Robbins.
  • Serge Nikalaichyk, auteur van de cNtfsAccessControl module.Serge Nikalaichyk, who authored the cNtfsAccessControl module. De bron voor deze module is op cNtfsAccessControl.The source for this module is at cNtfsAccessControl.

Zie ookSee also

Windows PowerShell Desired State Configuration-overzichtWindows PowerShell Desired State Configuration Overview

Configuraties doorvoerenEnacting configurations

Een pull-client instellen met behulp van het configuratie-idSetting up a pull client using configuration ID