Lägga till parametrar i en konfiguration
Precis som Functions kan konfigurationer parametriseras för att tillåta mer dynamiska konfigurationer baserat på användarindata. Stegen liknar de som beskrivs i Funktioner med parametrar.
Det här exemplet börjar med en grundläggande konfiguration som konfigurerar "Spooler"-tjänsten till "Körs".
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'
}
}
}
Inbyggda konfigurationsparametrar
Till skillnad från en funktion lägger dock attributet CmdletBinding till inga funktioner. Förutom vanliga parametrar kan konfigurationer också använda följande inbyggda parametrar, utan att du behöver definiera dem.
Parameter | Beskrivning |
---|---|
-InstanceName |
Används för att definiera sammansatta konfigurationer |
-DependsOn |
Används för att definiera sammansatta konfigurationer |
-PSDSCRunAsCredential |
Används för att definiera sammansatta konfigurationer |
-ConfigurationData |
Används för att skicka in strukturerade konfigurationsdata för användning i konfigurationen. |
-OutputPath |
Används för att ange var filen "<computername.mof>" ska kompileras |
Lägga till egna parametrar i Konfigurationer
Förutom de inbyggda parametrarna kan du även lägga till egna parametrar i dina konfigurationer. Parameterblocket hamnar direkt i konfigurationsdeklarationen, precis som en funktion. Ett konfigurationsparameterblock bör ligga utanför noddeklarationer och ovanför eventuella importinstruktioner. Genom att lägga till parametrar kan du göra konfigurationerna mer robusta och dynamiska.
Configuration TestConfig
{
param
(
)
Lägg till en ComputerName-parameter
Den första parametern som du kan lägga till är en -Computername
parameter så att du dynamiskt kan kompilera en ".mof"-fil för alla -Computername
som du skickar till konfigurationen. Precis som Functions kan du också definiera ett standardvärde, om användaren inte skickar ett värde för -ComputerName
param
(
[String]
$ComputerName="localhost"
)
I konfigurationen kan du sedan ange parametern -ComputerName
när du definierar nodblocket.
Node $ComputerName
{
}
Anropa konfigurationen med parametrar
När du har lagt till parametrar i konfigurationen kan du använda dem precis som med en cmdlet.
TestConfig -ComputerName "server01"
Kompilera flera .mof-filer
Node-blocket kan också acceptera en kommaavgränsad lista med datornamn och generera ".mof"-filer för varje. Du kan köra följande exempel för att generera ".mof"-filer för alla datorer som skickas till parametern -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"
Avancerade parametrar i konfigurationer
Förutom en -ComputerName
parameter kan vi lägga till parametrar för tjänstens namn och tillstånd.
I följande exempel läggs ett parameterblock till med en -ServiceName
parameter och används för att dynamiskt definiera tjänstresursblocket . Den lägger också till en -State
parameter för att dynamiskt definiera tillståndet i tjänstresursblocket .
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
}
}
}
Anteckning
I mer avancerade scenarier kan det vara mer meningsfullt att flytta dynamiska data till strukturerade konfigurationsdata.
Exempelkonfigurationen tar nu en dynamisk $ServiceName
, men om en inte har angetts resulterar kompileringen i ett fel. Du kan lägga till ett standardvärde som det här exemplet.
[String]
$ServiceName="Spooler"
I det här fallet är det dock mer meningsfullt att helt enkelt tvinga användaren att ange ett värde för parametern $ServiceName
. Med parameter
attributet kan du lägga till ytterligare verifierings- och pipelinestöd till konfigurationens parametrar.
Lägg till attributblocket parameter
som i exemplet nedan ovanför valfri parameterdeklaration.
[parameter()]
[String]
$ServiceName
Du kan ange argument för varje parameter
attribut för att styra aspekter av den definierade parametern. I följande exempel blir parametern $ServiceName
Obligatorisk .
[parameter(Mandatory)]
[String]
$ServiceName
För parametern $State
vill vi förhindra att användaren anger värden utanför en fördefinierad uppsättning (t.ex. Kör, Stoppad) ValidationSet*
attributet hindrar användaren från att ange värden utanför en fördefinierad uppsättning (till exempel Körs, Stoppad). I följande exempel läggs ValidationSet
attributet till i parametern $State
. Eftersom vi inte vill göra parametern $State
Obligatorisk måste vi lägga till ett standardvärde för den.
[ValidateSet("Running", "Stopped")]
[String]
$State="Running"
Anteckning
Du behöver inte ange ett parameter
attribut när du använder ett validation
attribut.
Du kan läsa mer om valideringsattributen parameter
och i about_Functions_Advanced_Parameters.
Fullständigt parametriserad konfiguration
Nu har vi en parametriserad konfiguration som tvingar användaren att ange en -InstanceName
, -ServiceName
och validerar parametern -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
}
}
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för