Använda Import-DSCResourceUsing Import-DSCResource

Import-DSCResource är ett dynamiskt nyckelord som bara kan användas i ett konfigurations skript block för att importera de resurser som behövs i konfigurationen.Import-DSCResource is a dynamic keyword, which can only be used inside a Configuration script block to import any resources needed in your Configuration. Resurser under $PSHOME importeras automatiskt, men det anses fortfarande vara bästa praxis att importera alla resurser som används i konfigurationen.Resources under $PSHOME are imported automatically, but it is still considered best practice to explicitly import all resources used in your Configuration.

Syntaxen för Import-DSCResource visas nedan.The syntax for Import-DSCResource is shown below. När du anger moduler efter namn är det ett krav för att lista var och en på en ny rad.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>]
ParameterParameter BeskrivningDescription
-Name DSC-resursens namn som du måste importera.The DSC resource name(s) that you must import. Om modulnamnet anges söker kommandot efter dessa DSC-resurser i den här modulen. Annars söker kommandot igenom DSC-resurserna i alla DSC-resurs Sök vägar.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. Jokertecken stöds.Wildcards are supported.
-ModuleName Modulens namn eller modulens specifikation.The module name, or module specification. Om du anger vilka resurser som ska importeras från en modul försöker kommandot endast importera resurserna.If you specify resources to import from a module, the command will try to import only those resources. Om du bara anger modulen importeras alla DSC-resurser i modulen.If you specify the module only, the command imports all the DSC resources in the module.
-ModuleVersion Från och med PowerShell 5,0 kan du ange vilken version av en modul som en konfiguration ska använda.Beginning in PowerShell 5.0, you can specify which version of a module a configuration should use. Mer information finns i Importera en angiven version av en installerad resurs.For more information, see Import a specific version of an installed resource.
Import-DscResource -ModuleName xActiveDirectory

Exempel: använda Import-DSCResource i en konfigurationExample: 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
...

Anteckning

Det finns inte stöd för att ange flera värden för resurs namn och moduler i samma kommando.Specifying multiple values for Resource names and modules names in same command are not supported. Det kan ha icke-deterministiskt beteende för vilken resurs som ska läsas in från vilken modul i samma resurs som finns i flera moduler.It can have non-deterministic behavior about which resource to load from which module in case same resource exists in multiple modules. Kommandot nedan leder till ett fel under kompileringen.Below command will result in error during compilation.

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

Saker att tänka på när du bara använder parametern name:Things to consider when using only the Name parameter:

  • Det är en resurs intensiv åtgärd beroende på hur många moduler som är installerade på datorn.It is a resource-intensive operation depending on the number of modules installed on machine.
  • Den första resursen som påträffas med det aktuella namnet läses in.It will load the first resource found with the given name. Om det finns fler än en resurs med samma namn installerat kan fel resurs läsas in.In the case where there is more than one resource with same name installed, it could load the wrong resource.

Den rekommenderade användningen är att ange –ModuleName med -Name parametern, enligt beskrivningen nedan.The recommended usage is to specify –ModuleName with the -Name parameter, as described below.

Den här användningen har följande fördelar:This usage has the following benefits:

  • Det minskar prestanda påverkan genom att begränsa Sök omfånget för den angivna resursen.It reduces the performance impact by limiting the search scope for the specified resource.
  • Det definierar uttryckligen den modul som definierar resursen, vilket säkerställer att rätt resurs läses in.It explicitly defines the module defining the resource, ensuring the correct resource is loaded.

Anteckning

I PowerShell 5,0 kan DSC-resurser ha flera versioner och versioner kan installeras på en dator sida vid sida.In PowerShell 5.0, DSC resources can have multiple versions, and versions can be installed on a computer side-by-side. Detta implementeras genom att ha flera versioner av en resurs-modul som finns i samma modul-mapp.This is implemented by having multiple versions of a resource module that are contained in the same module folder. Mer information finns i använda resurser med flera versioner.For more information, see Using resources with multiple versions.

IntelliSense med Import-DSCResourceIntellisense with Import-DSCResource

När du redigerar DSC-konfigurationen i ISE tillhandahåller PowerShell IntelliSence för resurser och resurs egenskaper.When authoring the DSC configuration in ISE, PowerShell provides IntelliSence for resources and resource properties. Resurs definitioner under $pshome modulens sökväg läses in automatiskt.Resource definitions under the $pshome module path are loaded automatically. När du importerar resurser med hjälp av Import-DSCResource nyckelordet läggs de angivna resurs definitionerna till och IntelliSense expanderas för att inkludera den importerade resursens schema.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.

IntelliSense i ISE för en DSC-resurs

Anteckning

Från och med PowerShell 5,0 har TABB-slutförande lagts till i ISE för DSC-resurser och deras egenskaper.Beginning in PowerShell 5.0, tab completion was added to the ISE for DSC resources and their properties. Mer information finns i resurser.For more information, see Resources.

När du kompilerar konfigurationen använder PowerShell de importerade resurs definitionerna för att verifiera alla resurs block i konfigurationen.When compiling the Configuration, PowerShell uses the imported resource definitions to validate all resource blocks in the configuration. Varje resurs block verifieras med hjälp av resursens schema definition, för följande regler.Each resource block is validated, using the resource's schema definition, for the following rules.

  • Endast egenskaper som definieras i schemat används.Only properties defined in schema are used.
  • Data typerna för varje egenskap är korrekta.The data types for each property are correct.
  • Nycklar egenskaper har angetts.Keys properties are specified.
  • Ingen skrivskyddad egenskap används.No read-only property is used.
  • Validering av värde mappnings typer.Validation on value maps types.

Överväg följande konfiguration: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"
        }
    }
}

Att kompilera den här konfigurationen resulterar i ett fel.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.

Med IntelliSense och schema validering kan du fånga fler fel under parsning och kompilering, vilket undviker komplikationer vid körnings tillfället.Intellisense and schema validation allow you to catch more errors during parse and compilation time, avoiding complications at run time.

Anteckning

Varje DSC-resurs kan ha ett namn och ett FriendlyName som definieras av resursens schema.Each DSC resource can have a name, and a FriendlyName defined by the resource's schema. Nedan visas de två första raderna i "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

När du använder den här resursen i en konfiguration kan du ange MSFT_ServiceResource eller tjänst .When using this resource in a Configuration, you can specify MSFT_ServiceResource or Service .

Skillnader mellan PowerShell v4 och v5PowerShell v4 and v5 differences

Det finns flera skillnader som du ser när du redigerar konfigurationer i PowerShell 4,0 jämfört med PowerShell 5,0 och senare.There are multiple differences you see when authoring Configurations in PowerShell 4.0 vs. PowerShell 5.0 and later. Det här avsnittet visar skillnaderna som du ser relevanta för den här artikeln.This section will highlight the differences that you see relevant to this article.

Flera resurs versionerMultiple Resource Versions

Det finns inte stöd för att installera och använda flera versioner av resurser sida vid sida i PowerShell 4,0.Installing and using multiple versions of resources side by side was not supported in PowerShell 4.0. Om du upptäcker problem med att importera resurser till din konfiguration måste du kontrol lera att du bara har en version av resursen installerad.If you notice issues importing resources into your Configuration, ensure that you only have one version of the resource installed.

I bilden nedan installeras två versioner av xPSDesiredStateConfiguration -modulen.In the image below, two versions of the xPSDesiredStateConfiguration module are installed.

Flera resurs versioner som är installerade i mappen

Kopiera innehållet i den önskade modulens version till den översta nivån i modulens katalog.Copy the contents of your desired module version to the top level of the module directory.

Kopiera den önskade versionen till katalogen på den översta nivån

ResursplatsResource location

När du redigerar och kompilerar konfigurationer kan dina resurser lagras i valfri katalog som anges av din PSModulePath.When authoring and compiling Configurations, your resources can be stored in any directory specified by your PSModulePath. I PowerShell 4,0 kräver LCM att alla DSC-resurspooler lagras under "program Files\WindowsPowerShell\Modules" eller $pshome\Modules .In PowerShell 4.0, the LCM requires all DSC resource modules to be stored under "Program Files\WindowsPowerShell\Modules" or $pshome\Modules. Från och med PowerShell 5,0 togs detta krav bort och resurspooler kan lagras i valfri katalog som anges av PSModulePath .Beginning in PowerShell 5.0, this requirement was removed, and resource modules can be stored in any directory specified by PSModulePath.

ModuleVersion tillagtModuleVersion added

Med början i PowerShell 5,0 -ModuleVersion kan du ange vilken version av en modul som ska användas i konfigurationen.Beginning in PowerShell 5.0, the -ModuleVersion parameter allows you to specify which version of a module to use within your configuration.

Se ävenSee also