Używanie polecenia Import-DSCResourceUsing Import-DSCResource

Import-DScResource jest dynamicznym słowem kluczowym, którego można używać tylko wewnątrz bloku skryptu konfiguracji.Import-DScResource is a dynamic keyword, which can only be used inside a Configuration script block. Import-DSCResourceSłowo kluczowe służące do importowania wszelkich zasobów wymaganych w konfiguracji.The Import-DSCResource keyword to import any resources needed in your Configuration. Zasoby w obszarze $pshome są importowane automatycznie, ale nadal jest uważane za najlepsze rozwiązanie do jawnego importowania wszystkich zasobów używanych w konfiguracji.Resources under $pshome are imported automatically, but it is still considered best practice to explicitly import all resources used in your Configuration.

Składnia dla Import-DSCResource jest pokazana poniżej.The syntax for Import-DSCResource is shown below. W przypadku określania modułów według nazwy jest wymagane, aby wyświetlić każdą z nich w nowym wierszu.When specifying modules by name, it is a requirement to list each on a new line.

Import-DscResource [-Name <ResourceName(s)>] [-ModuleName <ModuleName>] [-ModuleVersion <ModuleVersion>]
ParametrParameter OpisDescription
-Name Nazwy zasobów DSC, które należy zaimportować.The DSC resource name(s) that you must import. Jeśli nazwa modułu jest określona, polecenie wyszukuje te zasoby DSC w ramach tego modułu; w przeciwnym razie polecenie przeszukuje zasoby DSC we wszystkich ścieżkach zasobów DSC.If the module name is specified, the command searches for these DSC resources within this module; otherwise the command searches the DSC resources in all DSC resource paths. Symbole wieloznaczne są obsługiwane.Wildcards are supported.
-ModuleName Nazwa modułu lub Specyfikacja modułu.The module name, or module specification. W przypadku określenia zasobów do zaimportowania z modułu polecenie spowoduje próbę zaimportowania tylko tych zasobów.If you specify resources to import from a module, the command will try to import only those resources. Jeśli określisz tylko moduł, polecenie importuje wszystkie zasoby DSC w module.If you specify the module only, the command imports all the DSC resources in the module.
-ModuleVersion Począwszy od programu PowerShell 5,0, można określić wersję modułu, który ma być używany przez konfigurację.Beginning in PowerShell 5.0, you can specify which version of a module a configuration should use. Aby uzyskać więcej informacji, zobacz Importowanie określonej wersji zainstalowanego zasobu.For more information, see Import a specific version of an installed resource.
Import-DscResource -ModuleName xActiveDirectory

Przykład: Użyj elementu import-DSCResource w konfiguracjiExample: Use Import-DSCResource within a configuration

Configuration MSDSCConfiguration
{
    # Search for and imports Service, File, and Registry from the module PSDesiredStateConfiguration.
    Import-DSCResource -ModuleName PSDesiredStateConfiguration -Name Service, File, Registry

    # Search for and import Resource1 from the module that defines it.
    # If only –Name parameter is used then resources can belong to different PowerShell modules as well.
    # TimeZone resource is from the ComputerManagementDSC module which is not installed by default.
    # As a best practice, list each requirement on a different line if possible.  This makes reviewing
    # multiple changes in source control a bit easier.
    Import-DSCResource -Name File
    Import-DSCResource -Name TimeZone

    # Search for and import all DSC resources inside the module PSDesiredStateConfiguration.
    # When specifying the modulename parameter, it is a requirement to list each on a new line.
    Import-DSCResource -ModuleName PSDesiredStateConfiguration
    # In PowerShell 5.0 and later, you can specify a ModuleVersion parameter
    Import-DSCResource -ModuleName ComputerManagementDsc -ModuleVersion 6.0.0.0
...

Uwaga

Określanie wielu wartości nazw zasobów i nazw modułów w tym samym poleceniu nie jest obsługiwane.Specifying multiple values for Resource names and modules names in same command are not supported. Może mieć niedeterministyczne zachowanie dotyczące tego, który zasób jest ładowany, z którego modułu w przypadku tego samego zasobu istnieje w wielu modułach.It can have non-deterministic behavior about which resource to load from which module in case same resource exists in multiple modules. Poniższe polecenie spowoduje błąd podczas kompilacji.Below command will result in error during compilation.

Import-DscResource -Name UserConfigProvider*,TestLogger1 -ModuleName UserConfigProv,PsModuleForTestLogger

Kwestie, które należy wziąć pod uwagę w przypadku używania tylko parametru name:Things to consider when using only the Name parameter:

  • Jest to operacja intensywnie korzystająca z zasobów w zależności od liczby modułów zainstalowanych na komputerze.It is a resource-intensive operation depending on the number of modules installed on machine.
  • Zostanie załadowany pierwszy znaleziony zasób o podaną nazwę.It will load the first resource found with the given name. W przypadku, gdy zainstalowano więcej niż jeden zasób o tej samej nazwie, może załadować niewłaściwy zasób.In the case where there is more than one resource with same name installed, it could load the wrong resource.

Zalecanym użyciem jest określenie –ModuleName -Name parametru z parametrem, zgodnie z poniższym opisem.The recommended usage is to specify –ModuleName with the -Name parameter, as described below.

To użycie ma następujące zalety:This usage has the following benefits:

  • Zmniejsza to wpływ na wydajność, ograniczając zakres wyszukiwania dla określonego zasobu.It reduces the performance impact by limiting the search scope for the specified resource.
  • Jawnie definiuje moduł definiujący zasób, upewniając się, że jest ładowany prawidłowy zasób.It explicitly defines the module defining the resource, ensuring the correct resource is loaded.

Uwaga

W programie PowerShell 5,0 zasoby DSC mogą mieć wiele wersji, a wersje można instalować na komputerze obok siebie.In PowerShell 5.0, DSC resources can have multiple versions, and versions can be installed on a computer side-by-side. Jest to implementowane przez posiadanie wielu wersji modułu zasobów, które znajdują się w tym samym folderze modułu.This is implemented by having multiple versions of a resource module that are contained in the same module folder. Aby uzyskać więcej informacji, zobacz Korzystanie z zasobów z wieloma wersjami.For more information, see Using resources with multiple versions.

Technologia IntelliSense z usługą import-DSCResourceIntellisense with Import-DSCResource

Podczas tworzenia konfiguracji DSC w programie ISE program PowerShell udostępnia IntelliSence dla zasobów i właściwości zasobów.When authoring the DSC configuration in ISE, PowerShell provides IntelliSence for resources and resource properties. Definicje zasobów w $pshome ścieżce modułu są ładowane automatycznie.Resource definitions under the $pshome module path are loaded automatically. Po zaimportowaniu zasobów przy użyciu Import-DSCResource słowa kluczowego określone definicje zasobów są dodawane, a funkcja IntelliSense jest rozwinięta, aby uwzględnić schemat zaimportowanego zasobu.When you import resources using the Import-DSCResource keyword, the specified resource definitions are added and Intellisense is expanded to include the imported resource's schema.

Funkcja IntelliSense w ISE dla zasobu DSC

Uwaga

Począwszy od programu PowerShell 5,0, uzupełnianie kart zostało dodane do ISE dla zasobów DSC i ich właściwości.Beginning in PowerShell 5.0, tab completion was added to the ISE for DSC resources and their properties. Aby uzyskać więcej informacji, zobacz zasoby.For more information, see Resources.

Podczas kompilowania konfiguracji program PowerShell używa zaimportowanych definicji zasobów do walidacji wszystkich bloków zasobów w konfiguracji.When compiling the Configuration, PowerShell uses the imported resource definitions to validate all resource blocks in the configuration. Każdy blok zasobów jest sprawdzany przy użyciu definicji schematu zasobu dla następujących reguł.Each resource block is validated, using the resource's schema definition, for the following rules.

  • Używane są tylko właściwości zdefiniowane w schemacie.Only properties defined in schema are used.
  • Typy danych dla każdej właściwości są poprawne.The data types for each property are correct.
  • Określono właściwości kluczy.Keys properties are specified.
  • Nie jest używana właściwość tylko do odczytu.No read-only property is used.
  • Sprawdzanie poprawności typów map wartości.Validation on value maps types.

Weź pod uwagę następującą konfigurację:Consider the following configuration:

Configuration SchemaValidationInCorrectEnumValue
{
    # It is best practice to explicitly import all resources used in your Configuration.
    # This includes resources that are imported automatically, like WindowsFeature.
    Import-DSCResource -Name WindowsFeature
    Node localhost
    {
        WindowsFeature ROLE1
        {
            Name = "Telnet-Client"
            Ensure = "Invalid"
        }
    }
}

Skompilowanie tej konfiguracji spowoduje wystąpienie błędu.Compiling this Configuration results in an error.

PSDesiredStateConfiguration\WindowsFeature: At least one of the values 'Invalid' is not supported or
valid for property 'Ensure' on class 'WindowsFeature'. Please specify only supported values:
Present, Absent.

Funkcja IntelliSense i sprawdzanie poprawności schematu umożliwiają przechwytywanie większej liczby błędów podczas analizowania i kompilowania, unikając komplikacji w czasie wykonywania.Intellisense and schema validation allow you to catch more errors during parse and compilation time, avoiding complications at run time.

Uwaga

Każdy zasób DSC może mieć nazwę i FriendlyName zdefiniowane przez schemat zasobu.Each DSC resource can have a name, and a FriendlyName defined by the resource's schema. Poniżej znajdują się pierwsze dwa wiersze pliku "MSFT_ServiceResource. Shema. MOF".Below are the first two lines of "MSFT_ServiceResource.shema.mof".

[ClassVersion("1.0.0"),FriendlyName("Service")]
class MSFT_ServiceResource : OMI_BaseResource

W przypadku korzystania z tego zasobu w konfiguracji można określić MSFT_ServiceResource lub usługę.When using this resource in a Configuration, you can specify MSFT_ServiceResource or Service.

Różnice w programie PowerShell w wersji 4 i 5PowerShell v4 and v5 differences

Istnieje wiele różnic, które są widoczne podczas tworzenia konfiguracji w programie PowerShell 4,0 i programie PowerShell 5,0 lub nowszym.There are multiple differences you see when authoring Configurations in PowerShell 4.0 vs. PowerShell 5.0 and later. W tej sekcji zostaną wyróżnione różnice, które są odpowiednie dla tego artykułu.This section will highlight the differences that you see relevant to this article.

Wiele wersji zasobówMultiple Resource Versions

Instalowanie i używanie wielu wersji zasobów obok siebie nie jest obsługiwane w programie PowerShell 4,0.Installing and using multiple versions of resources side by side was not supported in PowerShell 4.0. Jeśli zauważysz problemy z importowaniem zasobów do konfiguracji, upewnij się, że zainstalowano tylko jedną wersję zasobu.If you notice issues importing resources into your Configuration, ensure that you only have one version of the resource installed.

Na poniższym obrazie zainstalowano dwie wersje modułu xPSDesiredStateConfiguration .In the image below, two versions of the xPSDesiredStateConfiguration module are installed.

Zainstalowano wiele wersji zasobów w folderze

Skopiuj zawartość żądanej wersji modułu do najwyższego poziomu katalogu modułów.Copy the contents of your desired module version to the top level of the module directory.

Skopiuj żądaną wersję do katalogu modułu najwyższego poziomu

Lokalizacja zasobuResource location

Podczas tworzenia i kompilowania konfiguracji zasoby mogą być przechowywane w dowolnym katalogu określonym przez PSModulePath.When authoring and compiling Configurations, your resources can be stored in any directory specified by your PSModulePath. W programie PowerShell 4,0 LCM wymaga, aby wszystkie moduły zasobów DSC były przechowywane w obszarze "program Files\WindowsPowerShell\Modules" lub $pshome\Modules .In PowerShell 4.0, the LCM requires all DSC resource modules to be stored under "Program Files\WindowsPowerShell\Modules" or $pshome\Modules. Począwszy od programu PowerShell 5,0, to wymaganie zostało usunięte, a moduły zasobów mogą być przechowywane w dowolnym katalogu określonym przez PSModulePath .Beginning in PowerShell 5.0, this requirement was removed, and resource modules can be stored in any directory specified by PSModulePath.

ModuleVersion dodanyModuleVersion added

Począwszy od programu PowerShell 5,0, -ModuleVersion parametr pozwala określić, która wersja modułu ma być używana w konfiguracji.Beginning in PowerShell 5.0, the -ModuleVersion parameter allows you to specify which version of a module to use within your configuration.

Zobacz takżeSee also