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. Az alatta lévő $PSHOME erőforrások automatikusan importálódnak, 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 megkeresi a DSC-erőforrásokat az összes DSC-erőforrásútvonalon. 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 a 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 arról, hogy melyik erőforrást kell betölteni, 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 az első talált erőforrást a megadott névvel. 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ábbiakban leírtak 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 a számítógépekre. 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ástulajdonságokhoz. A modul elérési útja alatti $pshome erőforrás-definíciók betöltése automatikusan megtörténik. Amikor a Import-DSCResource kulcsszóval importál erőforrásokat, a rendszer hozzáadja a megadott erőforrás-definíciókat, és az Intellisense ki van bontva, hogy 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 tulajdonságaikhoz. További információ: Erőforrások.

A konfiguráció összeállításakor a PowerShell az importált erőforrás-definíciókkal ellenőrzi a konfiguráció összes erőforrásblokkját. A rendszer az erőforrás sémadefiníciójának használatával ellenőrzi az egyes erőforrásblokkokat a következő 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.
  • A rendszer nem használ írásvédett tulajdonságot.
  • É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, így elkerülheti a futtatáskor fellépő 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 MSFT_ServiceResource vagy a Szolgáltatás lehetőséget.

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

A Konfigurációk powershell 4.0-s és PowerShell 5.0-s és újabb verzióiban való létrehozásakor több különbség is tapasztalható. Ez a szakasz a jelen cikk szempontjából releváns 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 párhuzamos 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.

Másolja a kívánt verziót 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 bármely könyvtárban tárolhatók.

ModuleVersion hozzáadva

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

Lásd még