Az Import-DSCResource használata

Import-DSCResource egy dinamikus kulcsszó, amely csak egy konfigurációs szkriptblokkon belül használható a konfigurációban szükséges erőforrások importálásához. A rendszer automatikusan importálja az alatta lévő $PSHOME erőforrásokat, de továbbra is ajánlott eljárás a konfigurációban használt összes erőforrás explicit importálása.

A szintaxisa Import-DSCResource alább látható. A modulok név szerinti megadásakor követelmény, hogy mindegyik új sorban szerepeljen.

Import-DscResource [-Name <ResourceName(s)>] [-ModuleName <ModuleName>] [-ModuleVersion <ModuleVersion>]

Paraméterek

  • -Name – Az importálandó DSC-erőforrásnév(ek). Ha a modul neve meg van adva, a parancs megkeresi ezeket a DSC-erőforrásokat ebben a modulban; ellenkező esetben a parancs az összes DSC-erőforrásútvonalon megkeresi a DSC-erőforrásokat. A helyettesítő karakterek támogatottak.
  • -ModuleName - A modul neve vagy a modul specifikációja. Ha egy modulból importálandó erőforrásokat ad meg, a parancs csak ezeket az erőforrásokat próbálja importálni. Ha csak a modult adja meg, a parancs importálja a modul összes DSC-erőforrását.
  • -ModuleVersion – A PowerShell 5.0-tól kezdve megadhatja, hogy egy modul melyik verzióját használja a konfiguráció. További információ: Telepített erőforrás adott verziójának importálása.
Import-DscResource -ModuleName xActiveDirectory

Példa: Import-DSCResource használata konfiguráción belül

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
...

Megjegyzés

Ha több értéket ad meg az erőforrásnevekhez és a modulnevekhez ugyanabban a parancsban, az nem támogatott. Nem determinisztikus viselkedéssel rendelkezhet azzal kapcsolatban, hogy melyik erőforrást kell betöltenie, ha ugyanaz az erőforrás több modulban is létezik. Az alábbi parancs hibát eredményez a fordítás során.

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

Megfontolandó szempontok, ha csak a Name paramétert használja:

  • A gépre telepített modulok számától függően erőforrás-igényes művelet.
  • Betölti a megadott névvel rendelkező első erőforrást. Abban az esetben, ha egynél több erőforrás van telepítve ugyanazzal a névvel, előfordulhat, hogy nem a megfelelő erőforrást tölti be.

Az ajánlott használatot a -Name paraméterrel kell megadni –ModuleName az alábbiak szerint.

Ez a használat a következő előnyökkel jár:

  • Csökkenti a teljesítményre gyakorolt hatást a megadott erőforrás keresési hatókörének korlátozásával.
  • Explicit módon definiálja az erőforrást meghatározó modult, biztosítva a megfelelő erőforrás betöltését.

Megjegyzés

A PowerShell 5.0-ban a DSC-erőforrások több verzióval is rendelkezhetnek, és a verziók egymás mellett telepíthetők egy számítógépre. Ezt egy erőforrásmodul több verziójával valósítja meg, amelyek ugyanabban a modulmappában találhatók. További információ: Erőforrások használata több verzióval.

Intellisense Import-DSCResource

A DSC-konfiguráció ISE-ben való létrehozásakor a PowerShell intelliSense-t biztosít az erőforrásokhoz és az erőforrás-tulajdonságokhoz. A modul elérési útja alatt található $pshome erőforrás-definíciók automatikusan töltődnek be. Amikor a kulcsszó használatával importál erőforrásokat, a rendszer hozzáadja a Import-DSCResource megadott erőforrás-definíciókat, és az Intellisense ki van bontva, hogy az tartalmazza az importált erőforrás sémáját.

Intellisense az ISE-ben DSC-erőforráshoz

Megjegyzés

A PowerShell 5.0-tól kezdve a lapkiegészítés hozzá lett adva az ISE-hez a DSC-erőforrásokhoz és azok tulajdonságaihoz. További információ: Erőforrások.

A konfiguráció összeállításakor a PowerShell az importált erőforrás-definíciókat használja a konfigurációban található összes erőforrásblokk ellenőrzéséhez. Az egyes erőforrásblokkok érvényesítése az erőforrás sémadefiníciójával történik az alábbi szabályokhoz.

  • A rendszer csak a sémában definiált tulajdonságokat használja.
  • Az egyes tulajdonságok adattípusai helyesek.
  • A kulcsok tulajdonságai meg vannak adva.
  • Nincs írásvédett tulajdonság.
  • Érvényesítés értéktérkép-típusokon.

Vegye figyelembe a következő konfigurációt:

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"
        }
    }
}

A konfiguráció összeállítása hibát eredményez.

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.

Az Intellisense és a sémaérvényesítés lehetővé teszi, hogy több hibát észleljen az elemzési és fordítási idő során, elkerülve a futtatáskor jelentkező bonyodalmakat.

Megjegyzés

Minden DSC-erőforrás rendelkezhet egy névvel és egy FriendlyName névvel , amelyet az erőforrás sémája határoz meg. Az alábbiakban a "MSFT_ServiceResource.shema.mof" első két sora látható.

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

Ha ezt az erőforrást konfigurációban használja, megadhatja a MSFT_ServiceResource vagy a Szolgáltatást.

PowerShell v4 és v5 különbségek

A Konfigurációk létrehozása a PowerShell 4.0-s és a PowerShell 5.0-s és újabb verzióiban több különbséget is tapasztal. Ez a szakasz a jelen cikkhez kapcsolódó különbségeket emeli ki.

Több erőforrásverzió

A PowerShell 4.0 nem támogatja az erőforrások több verziójának egymás melletti telepítését és használatát. Ha problémákat tapasztal az erőforrások konfigurációba való importálásával kapcsolatban, győződjön meg arról, hogy az erőforrásnak csak egy verziója van telepítve.

Az alábbi képen az xPSDesiredStateConfiguration modul két verziója van telepítve.

Több erőforrásverzió van telepítve a mappában

Másolja a kívánt modulverzió tartalmát a modulkönyvtár legfelső szintjére.

A kívánt verzió másolása a legfelső szintű modulkönyvtárba

Erőforrás helye

A konfigurációk létrehozásakor és összeállításakor az erőforrások a PSModulePath által megadott bármely könyvtárban tárolhatók. A PowerShell 4.0-ban az LCM megköveteli, hogy az összes DSC-erőforrásmodul a "Program Files\WindowsPowerShell\Modules" vagy $pshome\Modulesalatt legyen tárolva. A PowerShell 5.0-tól kezdve ez a követelmény el lett távolítva, és az erőforrásmodulok a által PSModulePathmegadott könyvtárban tárolhatók.

ModuleVersion hozzáadva

A PowerShell 5.0-tól kezdve a -ModuleVersion paraméterrel megadhatja, hogy a modul melyik verzióját használja a konfigurációban.

Lásd még