Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Windows PowerShell 4.0, Windows PowerShell 5.x
A Windows PowerShell Desired State Configuration (DSC) Script
erőforrása lehetővé teszi a Windows PowerShell-szkriptblokkok célcsomópontokon való futtatását. A Script
erőforrás GetScript
SetScript
és TestScript
olyan tulajdonságokat használ, amelyek szkriptblokkokat tartalmaznak a megfelelő DSC-állapotműveletek végrehajtásához.
Borravaló
Ahol lehetséges, ajánlott egy definiált DSC-erőforrást használni ahelyett, hogy ezt használná. Az Script
erőforrás hátrányai megnehezítik a tesztelést, a karbantartást és az előrejelzést.
A többi DSC-erőforrástól eltérően egy Script
erőforrás minden tulajdonsága kulcstulajdonság, és az erőforrás Get metódusa csak egyetlen sztringet tud visszaadni az aktuális állapothoz. Nincs garancia arra, hogy ez az erőforrás idempotens módon van implementálva, vagy hogy bármely rendszeren a várt módon fog működni, mert egyéni kódot használ. Nem tesztelhető anélkül, hogy meghívták volna egy célrendszeren.
Az Script
erőforrás használata előtt gondolja át, hogy ehelyett-e erőforrást létrehozni.
A jól definiált DSC-erőforrások használata olvashatóbbá és karbantarthatóbbá teszi a konfigurációkat.
Jegyzet
A DSC-erőforrás dokumentációja a PowerShell 7.2-es verzió előtti verzióját tartalmazza. A PSDscResources modul a Microsoft által hivatalosan támogatott új és frissített DSC-erőforrásokat tartalmazza. A PSDscResources modul a PowerShell-gyűjteményből érhető el.
További információ és frissített dokumentáció: PSDscResources referenciadokumentáció.
Szintaxis
Script [string] #ResourceName
{
GetScript = [string]
SetScript = [string]
TestScript = [string]
[ Credential = [PSCredential] ]
[ DependsOn = [string[]] ]
[ PsDscRunAsCredential = [PSCredential] ]
}
Jegyzet
GetScript
TestScript
és SetScript
blokkok sztringekként vannak tárolva.
Kellékek
Ingatlan | Leírás |
---|---|
GetScript | Egy szkriptblokk, amely a csomópont aktuális állapotát adja vissza. |
SetScript | Szkriptblokk, amelyet a DSC használ a megfelelőség kikényszerítésére, ha a csomópont nincs a kívánt állapotban. |
TestScript | Egy szkriptblokk, amely meghatározza, hogy a csomópont a kívánt állapotban van-e. |
Megbízólevél | A szkript futtatásához használandó hitelesítő adatokat jelzi, ha hitelesítő adatokra van szükség. |
Gyakori tulajdonságok
Ingatlan | Leírás |
---|---|
DependsOn | Azt jelzi, hogy egy másik erőforrás konfigurációjának futnia kell az erőforrás konfigurálása előtt. |
PsDscRunAsCredential | Beállítja a hitelesítő adatokat a teljes erőforrás futtatásához. |
Jegyzet
A PsDscRunAsCredential common tulajdonság hozzáadva lett a WMF 5.0-s verziójához, hogy bármilyen DSC-erőforrást futtathasson más hitelesítő adatokkal összefüggésben. További információ: Hitelesítő adatok használata DSC-erőforrásokkal.
További információk
GetScript
A DSC nem használja a GetScript
A Get-DscConfiguration parancsmag GetScript
hajtja végre a csomópont aktuális állapotának lekéréséhez. A visszatérési érték nem szükséges a GetScript
Ha visszaadott értéket ad meg, annak olyan Eredmény kulcsot tartalmazó kivonatolónak kell lennie, amelynek értéke sztring.
TestScript
A DSC TestScript
hajtja végre annak megállapításához, hogy SetScript
kell-e futtatni. Ha TestScript
$false
ad vissza, a DSC végrehajtja SetScript
, hogy a csomópont visszakerüljön a kívánt állapotba. Logikai értéket kell visszaadnia. A $true
eredménye azt jelzi, hogy a csomópont megfelelő, és SetScript
nem szabad végrehajtani.
A Test-DscConfiguration parancsmag végrehajtja a TestScript
, hogy lekérje a csomópontok megfelelőségét a Script
erőforrásoknak. Ebben az esetben azonban SetScript
nem fut, függetlenül attól, hogy TestScript
blokk mit ad vissza.
Jegyzet
A TestScript
minden kimenete a visszatérési érték részét képezi. A PowerShell nem nullaként értelmezi a nem tömörített kimenetet, ami azt jelenti, hogy a TestScript
a csomópont állapotától függetlenül $true
ad vissza. Ez kiszámíthatatlan eredményeket, hamis pozitív eredményeket eredményez, és nehézséget okoz a hibaelhárítás során.
SetScript
SetScript
módosítja a csomópontot a kívánt állapot kényszerítéséhez. A DSC SetScript
hív meg, ha a TestScript
szkriptblokk $false
ad vissza. A SetScript
nem lehet visszatérési érték.
Példák
1. példa: Példaszöveg írása szkripterőforrás használatával
Ez a példa az egyes csomópontokon található C:\TempFolder\TestFile.txt
meglétét teszteli. Ha nem létezik, a SetScript
használatával hozza létre. A GetScript
a fájl tartalmát adja vissza, és a visszatérési érték nem használatos.
Configuration ScriptTest
{
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
Node localhost
{
Script ScriptExample
{
SetScript = {
$sw = New-Object System.IO.StreamWriter("C:\TempFolder\TestFile.txt")
$sw.WriteLine("Some sample string")
$sw.Close()
}
TestScript = { Test-Path "C:\TempFolder\TestFile.txt" }
GetScript = { @{ Result = (Get-Content C:\TempFolder\TestFile.txt) } }
}
}
}
2. példa: Verzióadatok összehasonlítása szkripterőforrás használatával
Ez a példa lekéri a megfelelő verzióinformációkat a szerzői számítógépen található szövegfájlból, és a $version
változóban tárolja. A csomópont MOF-fájljának létrehozásakor a DSC az egyes szkriptblokkok $using:version
változóit a $version
változó értékére cseréli. A végrehajtás során a megfelelő verzió egy szövegfájlban lesz tárolva minden csomóponton, és összehasonlítja és frissíti a későbbi végrehajtásokat.
$version = Get-Content 'version.txt'
Configuration ScriptTest
{
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
Node localhost
{
Script UpdateConfigurationVersion
{
GetScript = {
$currentVersion = Get-Content (Join-Path -Path $env:SYSTEMDRIVE -ChildPath 'version.txt')
return @{ 'Result' = "$currentVersion" }
}
TestScript = {
# Create and invoke a scriptblock using the $GetScript automatic variable, which contains a string representation of the GetScript.
$state = [scriptblock]::Create($GetScript).Invoke()
if( $state.Result -eq $using:version )
{
Write-Verbose -Message ('{0} -eq {1}' -f $state.Result,$using:version)
return $true
}
Write-Verbose -Message ('Version up-to-date: {0}' -f $using:version)
return $false
}
SetScript = {
$using:version | Set-Content -Path (Join-Path -Path $env:SYSTEMDRIVE -ChildPath 'version.txt')
}
}
}
}
3. példa: Paraméterek használata szkripterőforrásban
Ez a példa a szkripterőforráson belülről fér hozzá a paraméterekhez a using
hatókör használatával.
ConfigurationData hasonló módon érhető el. A 2. példához hasonlóan az implementáció elvárja, hogy a verzió a célcsomóponton lévő helyi fájlban legyen tárolva. A helyi elérési út és a verzió is konfigurálható, és elválasztja a kódot a konfigurációs adatoktól.
Configuration ScriptTest
{
param
(
[Version]
$Version,
[string]
$FilePath
)
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
Node localhost
{
Script UpdateConfigurationVersion
{
GetScript = {
$currentVersion = Get-Content -Path $using:FilePath
return @{ 'Result' = "$currentVersion" }
}
TestScript = {
# Create and invoke a scriptblock using the $GetScript automatic variable,
# which contains a string representation of the GetScript.
$state = [scriptblock]::Create($GetScript).Invoke()
if( $state['Result'] -eq $using:Version )
{
Write-Verbose -Message ('{0} -eq {1}' -f $state['Result'],$using:version)
return $true
}
Write-Verbose -Message ('Version up-to-date: {0}' -f $using:version)
return $false
}
SetScript = {
Set-Content -Path $using:FilePath -Value $using:Version
}
}
}
}
Az eredményül kapott MOF-fájl tartalmazza az using
hatókörön keresztül elért változókat és értékeiket.
Ezeket minden szkriptblokkba injektáljuk, amely a változókat használja. A teszt- és beállításszkripteket a rendszer eltávolítja a rövidség kedvéért:
instance of MSFT_ScriptResource as $MSFT_ScriptResource1ref
{
GetScript = "$FilePath ='C:\\Config.ini'\n\n $currentVersion = Get-Content -Path $FilePath\n return @{ 'Result' = \"$currentVersion\" }\n";
TestScript = ...;
SetScript = ...;
};
Ismert korlátozások
- A szkripterőforráson belül átadott hitelesítő adatok nem mindig megbízhatóak lekéréses vagy leküldéses kiszolgálómodell használatakor. Ebben az esetben a szkripterőforrás helyett használjon teljes erőforrást.