Konfigurowanie serwera ściągania SMB platformy DSCSetting up a DSC SMB pull server

Dotyczy: Windows PowerShell 4,0, Windows PowerShell 5,0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Ważne

Serwer ściągania (Windows Feature DSC-Service ) jest obsługiwanym składnikiem systemu Windows Server, ale nie ma żadnych planów do oferowania nowych funkcji.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. Zalecane jest, aby rozpocząć przechodzenie zarządzanych klientów do Azure Automation DSC (obejmuje funkcje wykraczające poza serwer ściągający w systemie Windows Server) lub jedno z rozwiązań społecznościowych wymienionych w tym miejscu.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.

Serwer ściągania SMB protokołu DSC to komputer obsługujący udziały plików SMB, które udostępniają pliki konfiguracji DSC i zasoby DSC dla węzłów docelowych, gdy te węzły żądają.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.

Aby użyć serwera ściągania SMB dla DSC, należy wykonać następujące operacje:To use an SMB pull server for DSC, you have to:

  • Skonfiguruj udział plików SMB na serwerze, na którym działa program PowerShell w wersji 4,0 lub nowszejSet up an SMB file share on a server running PowerShell 4.0 or higher
  • Konfigurowanie klienta z programem PowerShell w wersji 4,0 lub nowszej w celu ściągania z tego udziału SMBConfigure a client running PowerShell 4.0 or higher to pull from that SMB share

Tworzenie udziału plików SMB przy użyciu zasobu xSmbShareUsing the xSmbShare resource to create an SMB file share

Istnieje kilka sposobów konfigurowania udziału plików SMB, ale przyjrzyjmy się sposobom tego, jak można to zrobić za pomocą 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.

Instalowanie zasobu xSmbShareInstall the xSmbShare resource

Wywołaj polecenie cmdlet Install-module , aby zainstalować moduł xSmbShare .Call the Install-Module cmdlet to install the xSmbShare module.

Uwaga

Install-Module jest dołączony do modułu PowerShellGet , który jest zawarty w programie PowerShell 5,0.Install-Module is included in the PowerShellGet module, which is included in PowerShell 5.0. XSmbShare zawiera zasób DSC xSmbShare , którego można użyć do utworzenia udziału plików SMB.The xSmbShare contains the DSC resource xSmbShare , which can be used to create an SMB file share.

Tworzenie katalogu i udziału plikówCreate the directory and file share

Poniższa konfiguracja używa zasobu pliku do utworzenia katalogu dla udziału i zasobu xSmbShare w celu skonfigurowania udziału SMB: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 = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }
    }
}

Konfiguracja tworzy katalog C:\DscSmbShare , jeśli jeszcze nie istnieje, a następnie używa tego katalogu jako udziału plików SMB.The configuration creates the directory C:\DscSmbShare, if it doesn't already exist, and then uses that directory as an SMB file share. FullAccess należy nadać każdemu kontu, które musi zapisywać dane lub usuwać z udziału plików.FullAccess should be given to any account that needs to write to or delete from the file share. ReadAccess musi być określony dla każdego węzła klienta, który pobiera konfiguracje i/lub zasoby DSC z udziału.ReadAccess must be given to any client nodes that get configurations and/or DSC resources from the share.

Uwaga

Domyślnie program DSC działa jako konto systemowe, dlatego komputer musi mieć dostęp do udziału.DSC runs as the system account by default, so the computer itself must have access to the share.

Zapewnianie dostępu do systemu plików do klienta ściąganiaGive file system access to the pull client

Przyznanie ReadAccess do węzła klienta umożliwia dostęp do udziału SMB przez ten węzeł, ale nie do plików ani folderów w tym udziale.Giving ReadAccess to a client node allows that node to access the SMB share, but not to files or folders within that share. Należy jawnie udzielić węzłom klienckim dostępu do folderu i podfolderów udziałów SMB.You have to explicitly grant client nodes access to the SMB share folder and subfolders. Można to zrobić za pomocą usługi DSC, dodając użycie zasobu cNtfsPermissionEntry , który jest zawarty w module CNtfsAccessControl .We can do this with DSC by adding using the cNtfsPermissionEntry resource, which is contained in the CNtfsAccessControl module. Poniższa konfiguracja dodaje blok cNtfsPermissionEntry , który udziela ReadAndExecute dostępu do klienta ściągania: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 = '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'
        }
    }
}

Umieszczanie konfiguracji i zasobówPlacing configurations and resources

Zapisz wszystkie pliki MOF i/lub zasoby DSC, które mają być ściągane przez węzły klienta w folderze udziału SMB.Save any configuration MOF files and/or DSC resources that you want client nodes to pull in the SMB share folder.

Każdy plik MOF konfiguracji musi mieć nazwę ConfigurationID . MOF, gdzie ConfigurationID jest wartością właściwości ConfigurationID LCM węzła docelowego.Any configuration MOF file must be named ConfigurationID .mof, where ConfigurationID is the value of the ConfigurationID property of the target node's LCM. Aby uzyskać więcej informacji na temat konfigurowania klientów ściągania, zobacz Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji.For more information about setting up pull clients, see Setting up a pull client using configuration ID.

Uwaga

W przypadku korzystania z serwera ściągania SMB należy użyć identyfikatorów konfiguracji.You must use configuration IDs if you are using an SMB pull server. Nazwy konfiguracji nie są obsługiwane w przypadku protokołu SMB.Configuration names are not supported for SMB.

Każdy moduł zasobów musi być spakowany i nazwany zgodnie z poniższym wzorcem {Module Name}_{Module Version}.zip .Each resource module needs to be zipped and named according to the following pattern {Module Name}_{Module Version}.zip. Na przykład moduł o nazwie xWebAdminstration z wersją modułu 3.1.2.0 będzie miał nazwę "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'. Każda wersja modułu musi być zawarta w pojedynczym pliku zip.Each version of a module must be contained in a single zip file. Oddzielne wersje modułu w pliku zip nie są obsługiwane.Separate versions of a module in a zip file are not supported. Przed przystąpieniem do tworzenia modułów zasobów DSC do użycia z serwerem ściągania należy wprowadzić małą zmianę struktury katalogów.Before packaging up DSC resource modules for use with pull server, you need to make a small change to the directory structure.

Domyślny format modułów zawierających zasób DSC w programie WMF 5,0 to {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}\.

Przed spakowaniem na serwer ściągania Usuń folder, {Module version} tak aby ścieżka się stało {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}\. W przypadku tej zmiany należy umieścić folder zip zgodnie z powyższym opisem i umieocić te pliki zip w folderze udziału SMB.With this change, zip the folder as described above and place these zip files in the SMB share folder.

Tworzenie sumy kontrolnej MOFCreating the MOF checksum

Plik MOF konfiguracji musi być sparowany z plikiem sum kontrolnych tak, aby LCM w węźle docelowym mógł sprawdzić poprawność konfiguracji.A configuration MOF file needs to be paired with a checksum file so that an LCM on a target node can validate the configuration. Aby utworzyć sumę kontrolną, wywołaj polecenie cmdlet New-DSCCheckSum .To create a checksum, call the New-DSCCheckSum cmdlet. Polecenie cmdlet przyjmuje Path parametr, który określa folder, w którym znajduje się plik MOF konfiguracji.The cmdlet takes a Path parameter that specifies the folder where the configuration MOF is located. Polecenie cmdlet tworzy plik sumy kontrolnej o nazwie ConfigurationMOFName.mof.checksum , gdzie ConfigurationMOFName jest nazwą pliku MOF konfiguracji.The cmdlet creates a checksum file named ConfigurationMOFName.mof.checksum, where ConfigurationMOFName is the name of the configuration mof file. Jeśli w określonym folderze znajduje się więcej niż jeden plik MOF konfiguracji, zostanie utworzona suma kontrolna dla każdej konfiguracji w folderze.If there are more than one configuration MOF files in the specified folder, a checksum is created for each configuration in the folder.

Plik sumy kontrolnej musi znajdować się w tym samym katalogu co plik MOF konfiguracji ( $env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration domyślnie) i mieć taką samą nazwę z dodanym .checksum rozszerzeniem.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.

Uwaga

Jeśli plik MOF konfiguracji zostanie zmieniony w dowolny sposób, należy również ponownie utworzyć plik sum kontrolnych.If you change the configuration MOF file in any way, you must also recreate the checksum file.

Konfigurowanie klienta ściągania dla protokołu SMBSetting up a pull client for SMB

Aby skonfigurować klienta pobierającego konfiguracje i/lub zasoby z udziału SMB, należy skonfigurować lokalny Configuration Manager klienta (LCM) przy użyciu bloków ConfigurationRepositoryShare i ResourceRepositoryShare , które określają udział, z którego będą ściągane konfiguracje i zasoby DSC.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.

Aby uzyskać więcej informacji na temat konfigurowania LCM, zobacz Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji.For more information about configuring the LCM, see Setting up a pull client using configuration ID.

Uwaga

Dla uproszczenia w tym przykładzie użyto PSDscAllowPlainTextPassword , aby zezwolić na przekazywanie hasła w postaci zwykłego tekstu do parametru Credential .For simplicity, this example uses the PSDscAllowPlainTextPassword to allow passing a plaintext password to the Credential parameter. Aby uzyskać więcej informacji na temat przekazywania poświadczeń, zobacz Opcje poświadczeń w obszarze dane konfiguracji.For information about passing credentials more securely, see Credentials Options in Configuration Data. Należy określić ConfigurationID w bloku Ustawienia dla serwera ściągania SMB, nawet jeśli są ściągane tylko zasoby.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
        })
}

PodziękowaniaAcknowledgements

Specjalne podziękowania dla następujących osób:Special thanks to the following individuals:

  • Jan F. Robbins, którego wpisy przy użyciu protokołu SMB dla DSC poinformują o zawartości w tym temacie.Mike F. Robbins, whose posts on using SMB for DSC helped inform the content in this topic. Jego blog jest Jan F Robbins.His blog is at Mike F Robbins.
  • Serge Nikalaichyk, który utworzył moduł cNtfsAccessControl .Serge Nikalaichyk, who authored the cNtfsAccessControl module. Źródło dla tego modułu ma wartość cNtfsAccessControl.The source for this module is at cNtfsAccessControl.

Zobacz takżeSee also

Przegląd konfiguracji żądanego stanu programu Windows PowerShellWindows PowerShell Desired State Configuration Overview

Realizacja konfiguracjiEnacting configurations

Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracjiSetting up a pull client using configuration ID