Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.