Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för: Windows PowerShell 4.0, Windows PowerShell 5.0
DSC-konfigurationer är PowerShell-skript som definierar en särskild typ av funktion. Om du vill definiera en konfiguration använder du PowerShell-nyckelordskonfigurationen.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Spara skriptet som en .ps1 fil.
Konfigurationssyntax
Ett konfigurationsskript består av följande delar:
-
Konfigurationsblocket. Det här är det yttersta skriptblocket. Du definierar den med hjälp av nyckelordet Configuration och anger ett namn. I det här fallet är
MyDscConfigurationnamnet på konfigurationen . - Ett eller flera Node-block . Dessa definierar de noder (datorer eller virtuella datorer) som du konfigurerar.
I konfigurationen ovan finns det ett Node-block som riktar sig mot en dator med namnet
TEST-PC1. Node-blocket kan acceptera flera datornamn. - Ett eller flera resursblock. Det är här konfigurationen anger egenskaperna för de resurser som konfigureras. I det här fallet finns det två resursblock, som var och en anropar WindowsFeature-resursen .
Anmärkning
WindowsFeature DSC-resursen är endast tillgänglig på Windows Server-datorer. För datorer med ett klientoperativsystem, till exempel Windows 11, måste du använda WindowsOptionalFeature i stället. Mer information finns i avsnittet "WindowsOptionalFeature" i PSDscResources-dokumentationen.
I ett konfigurationsblock kan du göra allt som du normalt kan i en PowerShell-funktion. I föregående exempel, om du inte vill hårdkoda namnet på måldatorn i konfigurationen, kan du lägga till en parameter för nodnamnet.
I det här exemplet anger du namnet på noden genom att skicka den som parametern ComputerName när du kompilerar konfigurationen. Namnet är localhostsom standard .
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Node-blocket kan också acceptera flera datornamn. I exemplet ovan kan du antingen använda -ComputerName parametern eller skicka en kommaavgränsad lista med datorer direkt till Node-blocket.
MyDscConfiguration -ComputerName "localhost", "Server01"
När du anger en lista över datorer till Node-blocket , inifrån en konfiguration, måste du använda array-notation.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Kompilera konfigurationen
Innan du kan använda en konfiguration måste du kompilera den till ett MOF-dokument. Det gör du genom att anropa konfigurationen på samma sätt som du anropar en PowerShell-funktion. Den sista raden i exemplet, som endast innehåller namnet på konfigurationen, anropar konfigurationen.
Anmärkning
Om du vill anropa en konfiguration måste funktionen vara i globalt omfång (som med andra PowerShell-funktioner). Du kan göra detta antingen genom att "punktkälla" skriptet eller genom att köra konfigurationsskriptet med hjälp av F5 eller klicka på knappen Kör skript i ISE. Om du vill punktkälla skriptet kör du kommandot . .\myConfig.ps1 where myConfig.ps1 är namnet på skriptfilen som innehåller konfigurationen.
När du anropar konfigurationen gör den följande:
- Löser alla variabler
- Skapar en mapp i den aktuella katalogen med samma namn som konfigurationen.
- Skapar en fil med namnet NodeName.mof i den nya katalogen, där NodeName är namnet på målnoden i konfigurationen. Om det finns fler än en nod skapas en MOF-fil för varje nod.
Anmärkning
MOF-filen innehåller all konfigurationsinformation för målnoden. På grund av detta är det viktigt att hålla det säkert. Mer information finns i Skydda MOF-filen.
Om du kompilerar den första konfigurationen ovan resulterar det i följande mappstruktur:
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 localhost.mof
Om konfigurationen tar en parameter, som i det andra exemplet, måste den anges vid kompileringstillfället. Så här skulle det se ut:
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Använda nya resurser i konfigurationen
Om du körde föregående exempel kanske du har märkt att du fick en varning om att du använde en resurs utan att uttryckligen importera den. I dag levereras DSC med 12 resurser som en del av PSDesiredStateConfiguration-modulen.
Cmdleten, Get-DscResource, kan användas för att avgöra vilka resurser som är installerade i systemet och tillgängliga för användning av LCM.
När dessa moduler har placerats i $env:PSModulePath och har identifierats korrekt av Get-DscResource måste de fortfarande läsas in i konfigurationen.
Import-DscResource är ett dynamiskt nyckelord som bara kan identifieras i ett konfigurationsblock , det är inte en cmdlet. Import-DscResource stöder två parametrar:
- ModuleName är det rekommenderade sättet att använda Import-DscResource. Den accepterar namnet på modulen som innehåller de resurser som ska importeras (samt en strängmatris med modulnamn).
- Namn är namnet på resursen som ska importeras. Det här är inte det egna namnet som returneras som "Namn" av Get-DscResource, utan klassnamnet som används när du definierar resursschemat (returneras som ResourceType av Get-DscResource).
Mer information om hur du använder Import-DSCResourcefinns i Using Import-DSCResource
Skillnader mellan PowerShell v4 och v5
Det finns skillnader i var DSC-resurser måste lagras i PowerShell 4.0. Mer information finns i Resursplats.