Konfigurera en DSC SMB-hämtningsserver

Gäller för: Windows PowerShell 4.0, Windows PowerShell 5.0

Viktigt

Pull Server (Windows Feature DSC-Service) är en komponent som stöds i Windows Server, men det finns inga planer på att erbjuda nya funktioner. Vi vill att du ska veta att en nyare version av DSC nu är allmänt tillgänglig, som hanteras av en funktion i Azure Policy med namnet gästkonfiguration. Gästkonfigurationstjänsten kombinerar funktioner i DSC-tillägget, Azure Automation State Configuration och de vanligaste funktionerna från kundfeedback. Gästkonfigurationen omfattar även stöd för hybriddatorer via Arc-aktiverade servrar.

En DSC SMB-hämtningsserver är en dator som är värd för SMB-filresurser som gör DSC-konfigurationsfiler och DSC-resurser tillgängliga för målnoder när dessa noder ber om dem.

Om du vill använda en SMB-hämtningsserver för DSC måste du:

  • Konfigurera en SMB-filresurs på en server som kör PowerShell 4.0 eller senare
  • Konfigurera en klient som kör PowerShell 4.0 eller senare för att hämta från den SMB-resursen

Använda xSmbShare-resursen för att skapa en SMB-filresurs

Det finns ett antal sätt att konfigurera en SMB-filresurs, men vi ska titta på hur du kan göra detta med hjälp av DSC.

Installera xSmbShare-resursen

Anropa cmdleten Install-Module för att installera xSmbShare-modulen .

Anteckning

Install-Module ingår i PowerShellGet-modulen , som ingår i PowerShell 5.0. xSmbShare innehåller DSC-resursen xSmbShare, som kan användas för att skapa en SMB-filresurs.

Skapa katalogen och filresursen

Följande konfiguration använder filresursen för att skapa katalogen för resursen och xSmbShare-resursen för att konfigurera SMB-resursen:

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 = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }
    }
}

Konfigurationen skapar katalogen C:\DscSmbShare, om den inte redan finns och använder sedan den katalogen som en SMB-filresurs. FullAccess ska ges till alla konton som behöver skriva till eller ta bort från filresursen. ReadAccess måste ges till alla klientnoder som hämtar konfigurationer och/eller DSC-resurser från resursen.

Anteckning

DSC körs som systemkonto som standard, så själva datorn måste ha åtkomst till resursen.

Ge filsystemet åtkomst till pull-klienten

Genom att ge ReadAccess till en klientnod kan noden komma åt SMB-resursen, men inte till filer eller mappar i resursen. Du måste uttryckligen bevilja klientnoder åtkomst till SMB-resursmappen och undermapparna. Vi kan göra detta med DSC genom att lägga till med hjälp av resursen cNtfsPermissionEntry , som finns i CNtfsAccessControl-modulen . Följande konfiguration lägger till ett cNtfsPermissionEntry-block som ger ReadAndExecute åtkomst till pull-klienten:

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

    Node localhost
    {

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

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

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

Placera konfigurationer och resurser

Spara eventuella MOF-konfigurationsfiler och/eller DSC-resurser som du vill att klientnoder ska hämta i SMB-resursmappen.

Alla MOF-konfigurationsfiler måste ha namnet <ConfigurationID>.mof, där <ConfigurationID> är värdet för egenskapen ConfigurationID för målnodens LCM. Mer information om hur du konfigurerar pull-klienter finns i Konfigurera en pull-klient med hjälp av konfigurations-ID.

Anteckning

Du måste använda konfigurations-ID:t om du använder en SMB-hämtningsserver. Konfigurationsnamn stöds inte för SMB.

Varje resursmodul måste zippas och namnges enligt följande mönster {Module Name}_{Module Version}.zip. En modul med namnet xWebAdminstration med modulversionen 3.1.2.0 skulle till exempel ha namnet xWebAdministration_3.2.1.0.zip. Varje version av en modul måste finnas i en enda zip-fil. Separata versioner av en modul i en zip-fil stöds inte. Innan du paketerar DSC-resursmoduler för användning med hämtningsservern måste du göra en liten ändring i katalogstrukturen.

Standardformatet för moduler som innehåller DSC-resursen i WMF 5.0 är {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Innan du paketerar för hämtningsservern tar du helt enkelt bort {Module version} mappen så att sökvägen blir {Module Folder}\DscResources\{DSC Resource Folder}\. Med den här ändringen zippar du mappen enligt beskrivningen ovan och placerar zip-filerna i SMB-resursmappen.

Skapa MOF-kontrollsumman

En MOF-konfigurationsfil måste parkopplas med en kontrollsummafil så att en LCM på en målnod kan verifiera konfigurationen. Om du vill skapa en kontrollsumma anropar du cmdleten New-DSCCheckSum . Cmdleten tar en Path parameter som anger mappen där MOF-konfigurationen finns. Cmdleten skapar en checksum-fil med namnet ConfigurationMOFName.mof.checksum, där ConfigurationMOFName är namnet på konfigurationsfilen mof. Om det finns fler än en MOF-konfigurationsfil i den angivna mappen skapas en kontrollsumma för varje konfiguration i mappen.

Kontrollsummafilen måste finnas i samma katalog som MOF-konfigurationsfilen ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration som standard) och ha samma namn som .checksum tillägget.

Anteckning

Om du ändrar MOF-konfigurationsfilen på något sätt måste du även återskapa checksum-filen.

Konfigurera en pull-klient för SMB

Om du vill konfigurera en klient som hämtar konfigurationer och/eller resurser från en SMB-resurs konfigurerar du klientens lokala Configuration Manager (LCM) med ConfigurationRepositoryShare- och ResourceRepositoryShare-block som anger från vilken resurs du vill hämta konfigurationer och DSC-resurser.

Mer information om hur du konfigurerar LCM finns i Konfigurera en pull-klient med hjälp av konfigurations-ID.

Anteckning

För enkelhetens skull använder det här exemplet PSDscAllowPlainTextPassword för att tillåta att ett lösenord i klartext skickas till parametern Credential . Information om hur du skickar autentiseringsuppgifter på ett säkrare sätt finns i Alternativ för autentiseringsuppgifter i Konfigurationsdata. Du MÅSTE ange ett ConfigurationID i inställningsblocket för en metakonfiguration för en SMB-hämtningsserver, även om du bara hämtar resurser.

$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
        })
}

Erkännanden

Särskilt tack till följande individer:

  • Mike F. Robbins, vars inlägg om att använda SMB för DSC hjälpte till att informera innehållet i det här ämnet. Hans blogg är på Mike F Robbins.
  • Serge Nikalaichyk, som skapade modulen cNtfsAccessControl . Källan för den här modulen finns på cNtfsAccessControl.

Se även

översikt över Windows PowerShell Desired State Configuration

Tillämpa konfigurationer

Konfigurera en pullklient med konfigurations-ID