Använda konfigurationsdata i DSC
Gäller för: Windows PowerShell 4.0, Windows PowerShell 5.0
Med hjälp av den inbyggda DSC ConfigurationData-parametern kan du definiera data som kan användas i en konfiguration. På så sätt kan du skapa en enda konfiguration som kan användas för flera noder eller för olika miljöer. Om du till exempel utvecklar ett program kan du använda en konfiguration för både utvecklings- och produktionsmiljöer och använda konfigurationsdata för att ange data för varje miljö.
Det här avsnittet beskriver strukturen för ConfigurationData-hashtabellen. Exempel på hur du använder konfigurationsdata finns i Separera konfigurations- och miljödata.
Common-parametern ConfigurationData
En DSC-konfiguration tar en gemensam parameter, ConfigurationData, som du anger när du kompilerar konfigurationen. Information om hur du kompilerar konfigurationer finns i DSC-konfigurationer.
Parametern ConfigurationData är en hashtable som måste ha minst en nyckel med namnet AllNodes. Den kan också ha en eller flera andra nycklar.
Anteckning
Exemplen i det här avsnittet använder en enda ytterligare nyckel (förutom den namngivna AllNodes-nyckeln ) med namnet NonNodeData
, men du kan inkludera valfritt antal ytterligare nycklar och namnge dem vad du vill.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
Värdet för AllNodes-nyckeln är en matris. Varje element i den här matrisen är också en hash-tabell som måste ha minst en nyckel med namnet NodeName:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
Du kan också lägga till andra nycklar i varje hash-tabell:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
Om du vill tillämpa en egenskap på alla noder kan du skapa en medlem i AllNodes-matrisen som har NodeName*
på . Om du till exempel vill ge varje nod en LogPath
egenskap kan du göra följande:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
Detta motsvarar att lägga till en egenskap med ett namn på LogPath
med värdet "C:\Logs"
för i vart och ett av de andra blocken (VM-1
, VM-2
, och VM-3
).
Definiera ConfigurationData-hashtabellen
Du kan definiera ConfigurationData antingen som en variabel i samma skriptfil som en konfiguration (som i våra tidigare exempel) eller i en separat .psd1
fil. Om du vill definiera ConfigurationData i en .psd1
fil skapar du en fil som endast innehåller hashtabellen som representerar konfigurationsdata.
Du kan till exempel skapa en fil med namnet MyData.psd1
med följande innehåll:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
Kompilera en konfiguration med konfigurationsdata
Om du vill kompilera en konfiguration som du har definierat konfigurationsdata för skickar du konfigurationsdata som värde för parametern ConfigurationData .
Då skapas en MOF-fil för varje post i AllNodes-matrisen . Varje MOF-fil namnges med NodeName
egenskapen för motsvarande matrispost.
Om du till exempel definierar konfigurationsdata som i MyData.psd1
filen ovan skulle kompilering av en konfiguration skapa både VM-1.mof
VM-2.mof
och filer.
Kompilera en konfiguration med konfigurationsdata med hjälp av en variabel
Om du vill använda konfigurationsdata som definieras som en variabel i samma .ps1
fil som konfigurationen skickar du variabelnamnet som värdet för parametern ConfigurationData när du kompilerar konfigurationen:
MyDscConfiguration -ConfigurationData $MyData
Kompilera en konfiguration med konfigurationsdata med hjälp av en datafil
Om du vill använda konfigurationsdata som definieras i en .psd1-fil skickar du sökvägen och namnet på filen som värdet för parametern ConfigurationData när du kompilerar konfigurationen:
MyDscConfiguration -ConfigurationData .\MyData.psd1
Använda ConfigurationData-variabler i en konfiguration
DSC innehåller följande särskilda variabler som kan användas i ett konfigurationsskript:
- $AllNodes refererar till hela samlingen noder som definierats i ConfigurationData. Du kan filtrera AllNodes-samlingen med hjälp av . Where() och . ForEach().
- ConfigurationData refererar till hela hash-tabellen som skickas som parameter när en konfiguration kompileras.
- MyTypeName innehåller konfigurationsnamnet som variabeln används i. I konfigurationen
MyDscConfiguration
$MyTypeName
har till exempel värdetMyDscConfiguration
. - Node refererar till en viss post i AllNodes-samlingen när den har filtrerats med hjälp av . Where() eller . ForEach().
- Du kan läsa mer om dessa metoder i about_arrays
Använda icke-noddata
Som vi har sett i tidigare exempel kan ConfigurationData-hashtabellen ha en eller flera nycklar utöver den nödvändiga AllNodes-nyckeln. I exemplen i det här avsnittet har vi bara använt en enda ytterligare nod och döpt den NonNodeData
till . Du kan dock definiera valfritt antal ytterligare nycklar och namnge dem vad du vill.
Ett exempel på hur du använder icke-noddata finns i Separera konfigurations- och miljödata.