about_DesiredStateConfiguration
Kort beskrivning
Ger en kort introduktion till funktionen PowerShell Desired State Configuration (DSC).
Lång beskrivning
DSC är en hanteringsplattform i PowerShell som gör det möjligt att distribuera och hantera konfigurationsdata för programvarutjänster och hantera miljön där dessa tjänster körs.
DSC tillhandahåller en uppsättning PowerShell-språktillägg, nya cmdletar och resurser som du kan använda för att deklarativt ange hur du vill att tillståndet för din programvarumiljö ska konfigureras. Det ger också ett sätt att underhålla och hantera befintliga konfigurationer.
DSC introduceras i PowerShell 4.0.
Detaljerad information om DSC finns i Översikt över önskad tillståndskonfiguration i PowerShell.
UTVECKLA DSC-RESURSER MED KLASSER
Från och med PowerShell 5.0 kan du utveckla DSC-resurser med hjälp av klasser. Mer information finns i about_Classes och Skriva en anpassad DSC-resurs med PowerShell-klasser.
ANVÄNDA DSC
Om du vill använda DSC för att konfigurera din miljö definierar du först ett PowerShell-skriptblock med hjälp av nyckelordet Konfiguration, följt av en identifierare, som i sin tur följs av par klammerparenteser som avgränsar blocket. I konfigurationsblocket kan du definiera nodblock som anger önskat konfigurationstillstånd för varje nod (dator) i miljön. Ett nodblock börjar med nyckelordet Node, följt av namnet på måldatorn, som kan vara en variabel. Efter datornamnet kommer de klammerparenteser som avgränsar nodblocket. I nodblocket kan du definiera resursblock för att konfigurera specifika resurser. Ett resursblock börjar med resursens typnamn följt av den identifierare som du vill ange för blocket, följt av de klammerparenteser som avgränsar blocket, som du ser i följande exempel.
Configuration MyWebConfig {
# Parameters are optional
param ($MachineName, $WebsiteFilePath)
# A Configuration block can have one or more Node blocks
Node $MachineName
{
# Next, specify one or more resource blocks
# WindowsFeature is one of the resources you can use in a Node block
# This example ensures the Web Server (IIS) role is installed
WindowsFeature IIS
{
# To ensure that the role is not installed, set Ensure to "Absent"
Ensure = "Present"
Name = "Web-Server" # Use the Name property from Get-WindowsFeature
}
# You can use the File resource to create files and folders
# "WebDirectory" is the name you want to use to refer to this instance
File WebDirectory
{
Ensure = "Present" # You can also set Ensure to "Absent"
Type = "Directory" # Default is "File"
Recurse = $true
SourcePath = $WebsiteFilePath
DestinationPath = "C:\inetpub\wwwroot"
# Ensure that the IIS block is successfully run first before
# configuring this resource
DependsOn = "[WindowsFeature]IIS" # Use for dependencies
}
}
}
Om du vill skapa en konfiguration anropar du konfigurationsblocket på samma sätt som du anropar en PowerShell-funktion och skickar in eventuella förväntade parametrar som du kan ha definierat (två i exemplet ovan). I det här fallet kan du till exempel:
MyWebConfig -MachineName "TestMachine" -WebsiteFilePath `
"\\filesrv\WebFiles" -OutputPath "C:\Windows\system32\temp"
# OutputPath is optional
Detta genererar en MOF-fil per nod på den sökväg som du anger. Dessa MOF-filer anger önskad konfiguration för varje nod. Använd sedan följande cmdlet för att parsa konfigurationens MOF-filer, skicka varje nod dess motsvarande konfiguration och anta dessa konfigurationer. Observera att du inte behöver skapa en separat MOF-fil för klassbaserade DSC-resurser.
Start-DscConfiguration -Verbose -Wait -Path "C:\Windows\system32\temp"
ANVÄNDA DSC FÖR ATT UNDERHÅLLA KONFIGURATIONSTILLSTÅND
Med DSC är konfigurationen idempotent. Det innebär att om du använder DSC för att utföra samma konfiguration mer än en gång blir det resulterande konfigurationstillståndet alltid detsamma. Om du misstänker att alla noder i din miljö kan ha glidit från det önskade konfigurationstillståndet kan du använda samma DSC-konfiguration igen för att återställa dem till önskat tillstånd. Du behöver inte ändra konfigurationsskriptet för att endast hantera de resurser vars tillstånd har drivits från önskat tillstånd.
I följande exempel visas hur du kan kontrollera om det faktiska konfigurationstillståndet på en viss nod har glidit från den senaste DSC-konfigurationen som antogs på noden. I det här exemplet kontrollerar vi konfigurationen av den lokala datorn.
$session = New-CimSession -ComputerName "localhost"
Test-DscConfiguration -CimSession $session
INBYGGDA DSC-RESURSER
Du kan använda följande inbyggda resurser i konfigurationsskripten:
Name | Egenskaper |
---|---|
Fil | {DestinationPath, Attribut, Kontrollsumma, Innehåll...} |
Arkiv | {Mål, sökväg, kontrollsumma, autentiseringsuppgifter...} |
Environment | {Name, DependsOn, Ensure, Path...} |
Grupp | {GroupName, Credential, DependsOn, Description...} |
Loggas | {Message, DependsOn, PsDscRunAsCredential} |
Paket | {Namn, Sökväg, ProductId, Argument...} |
Register | {Key, ValueName, DependsOn, Ensure...} |
Skript | {GetScript, SetScript, TestScript, Credential...} |
Tjänst | {Name, BuiltInAccount, Credential, Dependencies...} |
User | {UserName, DependsOn, Description, Disabled...} |
WaitForAll | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForAny | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForSome | {NodeCount, NodeName, ResourceName, DependsOn...} |
WindowsFeature | {Name, Credential, DependsOn, Ensure...} |
WindowsOptionalFeature | {Name, DependsOn, Ensure, LogLevel...} |
WindowsProcess | {Argument, Sökväg, Autentiseringsuppgifter, DependsOn...} |
Kör cmdleten Get-DscResource
för att hämta en lista över tillgängliga DSC-resurser i systemet.
Kommentar
I PowerShell-versioner under 7.0 Get-DscResource
hittar du inte klassbaserade DSC-resurser.
Exemplet i det här avsnittet visar hur du använder fil- och WindowsFeature-resurserna. Om du vill se alla egenskaper som du kan använda med en resurs infogar du markören i resursnyckelordet (till exempel Fil) i konfigurationsskriptet i PowerShell ISE genom att hålla ned CTRL+BLANKSTEG
HITTA FLER RESURSER
Du kan ladda ned, installera och lära dig om många andra tillgängliga DSC-resurser som har skapats av PowerShell- och DSC-användarcommunityn och av Microsoft. Besök PowerShell-galleriet för att bläddra och lära dig mer om tillgängliga DSC-resurser.