Desired State Configuration (DSC) ismert problémái és korlátozásai
Kompatibilitástörő változás: Előfordulhat, hogy a DSC-konfigurációkban a jelszavak titkosításához/visszafejtéséhez használt tanúsítványok nem működnek a WMF 5.0 RTM telepítése után
A WMF 4.0 és a WMF 5.0 előzetes kiadásaiban a DSC nem engedélyezi a konfigurációban lévő jelszavak 121 karakternél hosszabb hosszát. A DSC arra kényszeríti, hogy rövid jelszavakat használjon, még akkor is, ha hosszú és erős jelszóra volt szükség. Ez a kompatibilitástörő változás lehetővé teszi, hogy a jelszavak tetszőleges hosszúságúak legyenek a DSC-konfigurációban.
Felbontás: Hozza létre újra a tanúsítványt adattitkosítással vagy kulcstitkosítási kulcshasználattal és a dokumentumtitkosítás kibővített kulcshasználatával (1.3.6.1.4.1.311.80.1). További információ: Protect-CmsMessage.
A DSC-parancsmagok meghiúsulhatnak a WMF 5.0 RTM telepítése után
Start-DscConfiguration
és más DSC-parancsmagok meghiúsulhatnak a WMF 5.0 RTM telepítése után a következő hibával:
LCM failed to retrieve the property PendingJobStep from the object of class dscInternalCache .
+ CategoryInfo : ObjectNotFound: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 6
+ PSComputerName : localhost
Felbontás: A DSCEngineCache.mof törléséhez futtassa a következő parancsot egy emelt szintű PowerShell-munkamenetben (futtatás rendszergazdaként):
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
Előfordulhat, hogy a DSC-parancsmagok nem működnek, ha a WMF 5.0 RTM telepítve van a WMF 5.0 éles előzetes verziójára
Felbontás: Futtassa a következő parancsot egy emelt szintű PowerShell-munkamenetben (futtatás rendszergazdaként):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
Az LCM instabil állapotba léphet a debugMode Get-DscConfiguration használatakor
Ha az LCM a DebugMode-ban van, a CTRL+C billentyűkombináció lenyomásával állítsa le a feldolgozást Get-DscConfiguration
, az LCM instabil állapotba léphet, így a DSC-parancsmagok többsége nem fog működni.
Felbontás: Ne nyomja le a CTRL+C billentyűkombinációt a parancsmag hibakeresése Get-DscConfiguration
közben.
Stop-DscConfiguration nem válaszolhat a DebugMode-ban
Ha az LCM a DebugMode-ban van, előfordulhat, Stop-DscConfiguration
hogy nem válaszol, amikor egy által indított műveletet próbál leállítani Get-DscConfiguration
Felbontás: Fejezze be a DSC-erőforrások hibakeresésével elindított Get-DscConfiguration
művelet hibakeresését.
Nem jelennek meg részletes hibaüzenetek a DebugMode-ban
Ha az LCM a DebugMode-ban található, nem jelennek meg részletes hibaüzenetek a DSC-erőforrásokból.
Felbontás: A DebugMode letiltása az erőforrás részletes üzeneteinek megtekintéséhez
Invoke-DscResource műveleteket nem lehet lekérni Get-DscConfigurationStatus parancsmaggal
Miután parancsmaggal Invoke-DscResource
közvetlenül meghívta az erőforrások metódusait, az ilyen művelet rekordjai nem kérhetők le a használatával Get-DscConfigurationStatus
.
Felbontás: Nincs.
Get-DscConfigurationStatus a lekérési ciklus műveleteit Konzisztencia típusként adja vissza
Ha egy csomópont LEKÉRÉSes frissítési módra van állítva, minden végrehajtott Get-DscConfigurationStatus
lekéréses művelet esetén a parancsmag a művelet típusát Konzisztenciaként jelenti a Kezdeti helyett
Felbontás: Nincs.
Invoke-DscResource parancsmag nem ad vissza üzenetet a legyártott sorrendben
A Invoke-DscResource
parancsmag nem ad vissza részletes, figyelmeztető és hibaüzeneteket az LCM vagy a DSC-erőforrás által létrehozott sorrendben.
Felbontás: Nincs.
A DSC-erőforrásokat nem lehet egyszerűen hibakeresésre használni Invoke-DscResource
Ha az LCM hibakeresési módban fut, Invoke-DscResource
a parancsmag nem ad információt a runspace-ről a hibakereséshez való csatlakozáshoz. További információ: DSC-erőforrások hibakeresése.
Felbontás: Felderítheti és csatlakoztathatja a runspace-t a parancsmagokGet-PSHostProcessInfo
, Debug-Runspace
Enter-PSHostProcess
Get-Runspace
és a DSC-erőforrás hibakereséséhez.
# Find all the processes hosting PowerShell
Get-PSHostProcessInfo
ProcessName ProcessId AppDomainName
----------- --------- -------------
powershell 3932 DefaultAppDomain
powershell_ise 2304 DefaultAppDomain
WmiPrvSE 3396 DscPsPluginWkr_AppDomain
# Enter the process that is hosting DSC engine (WMI process with DscPsPluginWkr_Appdomain)
Enter-PSHostProcess -Id 3396 -AppDomainName DscPsPluginWkr_AppDomain
# Find all the available rusnspaces in that process
Get-Runspace
Id Name ComputerName Type State Availability
-- ---- ------------ ---- ----- ------------
2 Runspace2 localhost Local Opened InBreakpoint
5 RemoteHost localhost Local Opened Busy
# Debug the runspace that is in **InBreakpoint** availability state
Debug-Runspace -Id 2
Ugyanazon csomópont különböző részleges konfigurációs dokumentumai nem rendelkezhet azonos erőforrásnevekkel
Az egyetlen csomóponton üzembe helyezett több részleges konfiguráció esetén az erőforrások azonos nevei futásidejű hibát okoznak.
Felbontás: Használjon különböző neveket a különböző részleges konfigurációkban lévő erőforrásokhoz is.
Start-DscConfiguration – A UseExisting nem működik a -Credential használatával
Ha a UseExisting paraméterrel használjaStart-DscConfiguration
, a rendszer figyelmen kívül hagyja a hitelesítőadat-paramétert. A DSC az alapértelmezett folyamatidentitást használja a művelet folytatásához. Ez hibát okoz, ha más hitelesítő adatokra van szükség a távoli csomóponton való folytatáshoz.
Felbontás: CIM-munkamenet használata távoli DSC-műveletekhez:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
IPv6-címek csomópontnevekként a DSC-konfigurációkban
Ebben a kiadásban a DSC-konfigurációs szkriptekben csomópontnévként használt IPv6-címek nem támogatottak.
Felbontás: Nincs.
DSC-erőforrások hibakeresése Class-Based
Ebben a kiadásban az osztályalapú DSC-erőforrások hibakeresése nem támogatott.
Felbontás: Nincs.
A DSC-Class-Based-erőforrás $script hatókörében definiált változók és függvények nem maradnak meg a DSC-erőforrás több hívása során
Több egymást követő hívás Start-DSCConfiguration
meghiúsul, ha a konfiguráció olyan osztályalapú erőforrást használ, amely a hatókörben $script
definiált változókkal vagy függvényekkel rendelkezik.
Felbontás: Definiálja magát a DSC-erőforrásosztály összes változóját és függvényét. Nincsenek $script
hatókörváltozók/függvények.
DSC-erőforrás hibakeresése PSDscRunAsCredential erőforrás használatakor
Ebben a kiadásban nem támogatott a DSC-erőforrás hibakeresése, ha egy erőforrás a PSDscRunAsCredential tulajdonságot használja a konfigurációban.
Felbontás: Nincs.
A PsDscRunAsCredential nem támogatott a DSC összetett erőforrásaihoz
Felbontás: Ha elérhető, használja a Credential tulajdonságot. Példa: ServiceSet és WindowsFeatureSet
Get-DscResource -Szintaxis nem megfelelően tükrözi a PsDscRunAsCredential függvényt
A Szintaxis paraméter nem tükrözi megfelelően a PsDscRunAsCredential paramétert, ha az erőforrás kötelezőként jelöli meg, vagy nem támogatja azt.
Felbontás: Nincs. Az ISE szerzői konfigurációja azonban a PsDscRunAsCredential tulajdonság megfelelő metaadatait tükrözi az IntelliSense használatakor.
A WindowsOptionalFeature nem érhető el a Windows 7-ben
A WindowsOptionalFeature DSC-erőforrás nem érhető el a Windows 7-ben. Ehhez az erőforráshoz szükség van a DISM modulra, valamint a Windows operációs rendszer Windows 8 és újabb kiadásaiban elérhető DISM-parancsmagokra.
Osztályalapú DSC-erőforrások esetén előfordulhat, hogy Import-DscResource -ModuleVersion nem a várt módon működik
Ha a fordítási csomópont egy osztályalapú DSC-erőforrásmodul több verziójával rendelkezik, nem választja ki a megadott verziót, Import-DscResource -ModuleVersion
és fordítási hibát eredményez.
ImportClassResourcesFromModule : Exception calling "ImportClassResourcesFromModule" with "3" argument(s):
"Keyword 'MyTestResource' already defined in the configuration."
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:2035 char:35
+ ... rcesFound = ImportClassResourcesFromModule -Module $mod -Resources $r ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ImportClassResourcesFromModule], MethodInvocationException
+ FullyQualifiedErrorId : PSInvalidOperationException,ImportClassResourcesFromModule
Felbontás: Importálja a szükséges verziót úgy, hogy a ModuleSpecification objektumot a ModuleName paraméterbe definiálja a RequiredVersion kulccsal, az alábbiak szerint:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Előfordulhat, hogy egyes DSC-erőforrások, például a beállításjegyzékbeli erőforrás feldolgozása hosszú időt vesz igénybe.
1. megoldás: Létrehozás egy ütemezési feladatot, amely rendszeres időközönként törli a következő mappát.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
2. megoldás: Módosítsa a DSC-konfigurációt a CommandAnalysis mappa törléséhez a konfiguráció végén.
Configuration $configName
{
# User Data
Registry SetRegisteredOwner
{
Ensure = 'Present'
Force = $True
Key = $Node.RegisteredKey
ValueName = $Node.RegisteredOwnerValue
ValueType = 'String'
ValueData = $Node.RegisteredOwnerData
}
#
# Script to delete the config
#
script DeleteCommandAnalysisCache
{
DependsOn = "[Registry]SetRegisteredOwner"
getscript = "@{}"
testscript = 'Remove-Item -Path $env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis -Force -Recurse -ErrorAction SilentlyContinue -ErrorVariable ev | out-null;$true'
setscript = '$true'
}
}