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.
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.
Másolja a kívánt modulverzió tartalmát a modulkönyvtár legfelső szintjére.
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\Modules
alatt 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 PSModulePath
megadott 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
Visszajelzés
Visszajelzés küldése és megtekintése a következőhöz: