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-onderdeel DSC-Service) is een ondersteunde onderdeel van Windows Server maar er zijn geen plannen om de 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 een overgang clients beheerd Azure Automation DSC (inclusief functies dan Pull-Server op Windows Server) of een van de community-oplossingen vermeld 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 voor de doelknooppunten wanneer die knooppunten van deze 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.

Wilt gebruiken een SMB-pull-server voor DSC, moet u u: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 waarop PowerShell 4.0 of hoger wordt uitgevoerd voor het ophalen van SMB-share configurerenConfigure a client running PowerShell 4.0 or higher to pull from that SMB share

De resource xSmbShare gebruiken voor het maken van een SMB-bestandsshareUsing the xSmbShare resource to create an SMB file share

Er zijn een aantal manieren op een SMB-bestandsshare instellen, maar bekijken we 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.

Opmerking: Install-Module is opgenomen in de PowerShellGet module die is opgenomen in PowerShell 5.0.Note: Install-Module is included in the PowerShellGet module, which is included in PowerShell 5.0. U kunt downloaden via 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 voor het maken van een SMB-bestandsshare.The xSmbShare contains the DSC resource xSmbShare, which can be used to create an SMB file share.

De directory en bestandsshare makenCreate the directory and file share

De volgende configuratie gebruikt de bestand resource toe aan de map voor de share maken 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 u de map C:\DscSmbShare als dat niet al bestaat en wordt vervolgens 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 krijgen tot een account dat moet kunnen om te schrijven of verwijderen van de bestandsshare en ReadAccess worden besteed aan de client knooppunten die configuraties en/of DSC-resources van de share (dit is omdat ophalen DSC als het systeem-account wordt standaard uitgevoerd, zodat de computer zelf heeft toegang 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-sharemap en submappen.You have to explicitly grant client nodes access to the SMB share folder and sub-folders. We kunt 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 wordt toegevoegd een cNtfsPermissionEntry blok die ReadAndExecute toegang aan de pull-client verleent: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'

        }


    }

}

Configuraties en resources plaatsenPlacing configurations and resources

Sla alle configuratie MOF-bestanden en/of de DSC-resources die u wilt dat de client-knooppunten ophalen van 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.

Elke configuratie MOF-bestand moet de naam ConfigurationID_MOF, waarbij _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.

Opmerking: moet u configuratie-ID's gebruiken als u een SMB-pull-server.Note: 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 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 een moduleversie van 3.1.2.0 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 in WMF 5.0 met de indeling van de module hebt toegevoegd wordt ondersteuning voor meerdere moduleversies van de in een enkele map wordt niet 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 aanbrengt 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 standaardindeling van modules met van DSC-resource in WMF 5.0 is ' {Modulemap}{moduleversie} \DscResources{DSC-Resourcemap}'.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 {moduleversie} map zodat het pad ' {Modulemap} \DscResources{DSC-Resourcemap}'.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 van de map zip zoals hierboven wordt beschreven en plaats deze zip-bestanden in de map van SMB-share.With this change, zip the folder as described above and place these zip files in the SMB share folder.

Maken van de controlesom MOFCreating the MOF checksum

Een configuratie MOF-bestand moet worden gekoppeld aan een bestand controlesom zodat een LCM in een doelknooppunt kunt 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 nieuw DSCCheckSum cmdlet.To create a checksum, call the New-DSCCheckSum cmdlet. De cmdlet heeft een pad 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 het mof-bestand voor configuratie.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.

De controlesom bestand moet aanwezig zijn in dezelfde map als het MOF-bestand voor configuratie ($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.

Opmerking: als u het MOF-bestand van de configuratie op een manier wijzigt, moet u ook het bestand controlesom opnieuw.Note: If you change the configuration MOF file in any way, you must also recreate the checksum file.

Een pull-client voor SMB instellenSetting up a pull client for SMB

Als u een client die Hiermee configuraties en/of bronnen van een SMB-share instelt, die u configureert de client lokale Configuration Manager (LCM) met ConfigurationRepositoryShare en ResourceRepositoryShare blokken die de share waaruit de pull-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.

Opmerking: voor eenvoud, in dit voorbeeld wordt de PSDscAllowPlainTextPassword om toe te staan voor het doorgeven van een wachtwoord als leesbare tekst voor de referentie parameter.Note: 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.

Opmerking: moet u een ConfigurationID in de instellingen blok van een metaconfiguratie voor een SMB-pull-server, zelfs als u alleen binnenhalen van resources.Note: 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:

Zie ookSee also