Paraméterek hozzáadása konfigurációkhoz
A Functionshöz hasonlóan a konfigurációk is paraméterezhetők, hogy dinamikusabb konfigurációkat engedélyezzenek a felhasználói bevitel alapján. A lépések hasonlóak a Functions with Parameters (Paraméterekkel rendelkező függvények) című cikkben leírt lépésekhez.
Ez a példa egy alapszintű konfigurációval kezdődik, amely úgy konfigurálja a "Spooler" szolgáltatást, hogy "Fut".
Configuration TestConfig
{
# It is best practice to explicitly import any required resources or modules.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
Node localhost
{
Service 'Spooler'
{
Name = 'Spooler'
State = 'Running'
}
}
}
Beépített konfigurációs paraméterek
A függvényekkel ellentétben azonban a CmdletBinding attribútum nem ad hozzá funkciót. A gyakori paraméterek mellett a konfigurációk a következő beépített paramétereket is használhatják anélkül, hogy meg kellene adnia őket.
Paraméter | Leírás |
---|---|
-InstanceName |
Összetett konfigurációk definiálásához használatos |
-DependsOn |
Összetett konfigurációk definiálásához használatos |
-PSDSCRunAsCredential |
Összetett konfigurációk definiálásához használatos |
-ConfigurationData |
Strukturált konfigurációs adatok átadására szolgál a konfigurációban való használathoz. |
-OutputPath |
Itt adhatja meg, hogy a "<computername.mof>" fájl hol lesz lefordítva |
Saját paraméterek hozzáadása a konfigurációkhoz
A beépített paraméterek mellett saját paramétereket is hozzáadhat a konfigurációkhoz. A paraméterblokk közvetlenül a konfigurációs deklaráción belülre kerül, ugyanúgy, mint egy függvény. A konfigurációs paraméterblokknak minden csomópont-deklaráción kívül kell lennie, és minden importálási utasítás felett kell lennie. Paraméterek hozzáadásával robusztusabbá és dinamikusabbá teheti a konfigurációkat.
Configuration TestConfig
{
param
(
)
ComputerName paraméter hozzáadása
Az első paraméter, amelyet felvehet, egy -Computername
paraméter, így dinamikusan lefordíthat egy ".mof" fájlt a konfigurációnak átadott fájlokhoz -Computername
. A Függvényekhez hasonlóan megadhat egy alapértelmezett értéket is, ha a felhasználó nem ad át értéket a következőhöz: -ComputerName
param
(
[String]
$ComputerName="localhost"
)
A konfiguráción belül megadhatja a paramétert -ComputerName
a csomópontblokk definiálásakor.
Node $ComputerName
{
}
A konfiguráció meghívása paraméterekkel
Miután hozzáadta a paramétereket a konfigurációhoz, ugyanúgy használhatja őket, mint egy parancsmaggal.
TestConfig -ComputerName "server01"
Több .mof fájl fordítása
A Csomópont blokk a számítógépnevek vesszővel tagolt listáját is elfogadhatja, és mindegyikhez létrehoz ".mof" fájlokat. Az alábbi példában ".mof" fájlokat hozhat létre a paraméternek átadott összes számítógéphez -ComputerName
.
Configuration TestConfig
{
param
(
[String[]]
$ComputerName="localhost"
)
# It is best practice to explicitly import any required resources or modules.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
Node $ComputerName
{
Service 'Spooler'
{
Name = 'Spooler'
State = 'Running'
}
}
}
TestConfig -ComputerName "server01", "server02", "server03"
Speciális paraméterek a konfigurációkban
A paraméter mellett -ComputerName
paramétereket is hozzáadhatunk a szolgáltatás nevéhez és állapotához.
Az alábbi példa egy paraméterblokkot ad hozzá egy -ServiceName
paraméterhez, és a használatával dinamikusan definiálja a Szolgáltatás erőforrásblokkot. Emellett hozzáad egy paramétert -State
, amely dinamikusan definiálja az állapotot a Szolgáltatás erőforrásblokkban.
Configuration TestConfig
{
param
(
[String]
$ServiceName,
[String]
$State,
[String]
$ComputerName="localhost"
)
# It is best practice to explicitly import any required resources or modules.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
Node $ComputerName
{
Service $ServiceName
{
Name = $ServiceName
State = $State
}
}
}
Megjegyzés
A fejlettebb forgatókönyvekben célszerűbb lehet a dinamikus adatokat strukturált konfigurációs adatokba áthelyezni.
A példakonfiguráció most dinamikus $ServiceName
, de ha nincs megadva, a fordítás hibát eredményez. Ehhez a példához hasonló alapértelmezett értéket adhat hozzá.
[String]
$ServiceName="Spooler"
Ebben a példában azonban célszerűbb a felhasználót arra kényszeríteni, hogy adjon meg egy értéket a $ServiceName
paraméterhez. Az parameter
attribútum lehetővé teszi további ellenőrzés és folyamattámogatás hozzáadását a konfiguráció paramétereihez.
Minden paraméterdeklaráció felett adja hozzá az parameter
attribútumblokkot az alábbi példához hasonlóan.
[parameter()]
[String]
$ServiceName
A definiált paraméter jellemzőinek szabályozásához minden parameter
attribútumhoz megadhat argumentumokat. Az alábbi példa kötelező$ServiceName
paramétert ad meg.
[parameter(Mandatory)]
[String]
$ServiceName
$State
A paraméter esetében szeretnénk megakadályozni, hogy a felhasználó előre definiált készleten kívüli értékeket adjon meg (például Futtatás, Leállítva). Az ValidationSet*
attribútum megakadályozza, hogy a felhasználó előre definiált készleten kívüli értékeket adjon meg (például Futtatás, Leállítva). Az alábbi példa hozzáadja az ValidationSet
attribútumot a $State
paraméterhez. Mivel nem szeretnénk kötelezővé tenni a $State
paramétert, hozzá kell adnunk hozzá egy alapértelmezett értéket.
[ValidateSet("Running", "Stopped")]
[String]
$State="Running"
Megjegyzés
Attribútum használata esetén nem kell attribútumot parameter
validation
megadnia.
További információt a about_Functions_Advanced_Parameters és az parameter
érvényesítési attribútumokról olvashat.
Teljes paraméteres konfiguráció
Most már rendelkezünk egy paraméteres konfigurációval, amely kényszeríti a felhasználót, hogy adjon meg egy -InstanceName
, -ServiceName
, és érvényesítse a paramétert -State
.
Configuration TestConfig
{
param
(
[parameter(Mandatory)]
[String]
$ServiceName,
[ValidateSet("Running","Stopped")]
[String]
$State="Running",
[String]
$ComputerName="localhost"
)
# It is best practice to explicitly import any required resources or modules.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
Node $ComputerName
{
Service $ServiceName
{
Name = $ServiceName
State = $State
}
}
}
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: