Známé problémy a omezení Desired State Configuration (DSC)
Zásadní změna: Po instalaci WMF 5.0 RTM nemusí fungovat certifikáty používané k šifrování/dešifrování hesel v konfiguracích DSC
Ve verzích WMF 4.0 a WMF 5.0 Preview nepovolilo DSC, aby hesla v konfiguraci byla delší než 121 znaků. DSC vynucovalo použití krátkých hesel i v případě, že bylo požadováno dlouhé a silné heslo. Tato změna způsobující chybu umožňuje, aby hesla v konfiguraci DSC byla libovolně dlouhá.
Rozlišení: Znovu vytvořte certifikát pomocí šifrování dat nebo použití šifrovacího klíče a rozšířeného použití klíče šifrování dokumentů (1.3.6.1.4.1.311.80.1). Další informace najdete v tématu Protect-CmsMessage.
Rutiny DSC můžou po instalaci WMF 5.0 RTM selhat
Start-DscConfiguration
Po instalaci WMF 5.0 RTM a dalších rutin DSC můžou selhat s následující chybou:
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
Rozlišení: Spuštěním následujícího příkazu v relaci PowerShellu se zvýšenými oprávněními (Spustit jako správce) odstraňte DSCEngineCache.mof:
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
Rutiny DSC nemusí fungovat, pokud je ve službě WMF 5.0 RTM nainstalovaná verze WMF 5.0 Production Preview.
Rozlišení: V relaci PowerShellu se zvýšenými oprávněními spusťte následující příkaz (spusťte jako správce):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
LCM může přejít do nestabilního stavu při používání Get-DscConfiguration v režimu ladění
Pokud je LCM v Režimu ladění, stisknutím kombinace kláves CTRL+C zastavte zpracování Get-DscConfiguration
, může dojít k tomu, že LCM přejde do nestabilního stavu, kdy většina rutin DSC nebude fungovat.
Rozlišení: Během ladění Get-DscConfiguration
rutiny nestiskejte kombinaci kláves CTRL+C.
Stop-DscConfiguration nemusí reagovat v režimu ladění
Pokud je LCM v režimu ladění, Stop-DscConfiguration
nemusí reagovat při pokusu o zastavení operace spuštěné Get-DscConfiguration
Rozlišení: Dokončete ladění operace, kterou spustil, Get-DscConfiguration
jak je popsáno v tématu Ladění prostředků DSC.
V režimu ladění se nezobrazují žádné podrobné chybové zprávy.
Pokud je LCM v Režimu ladění, nezobrazují se z prostředků DSC žádné podrobné chybové zprávy.
Rozlišení: Pokud chcete zobrazit podrobné zprávy z prostředku, zakažte Režim ladění .
Invoke-DscResource operace nelze načíst pomocí rutiny Get-DscConfigurationStatus.
Po použití Invoke-DscResource
rutiny k přímému vyvolání metod libovolného prostředku není možné záznamy takové operace načíst prostřednictvím Get-DscConfigurationStatus
.
Rozlišení: Žádný.
Get-DscConfigurationStatus vrací operace cyklu vyžádání jako typ Konzistence
Pokud je uzel nastavený na režim aktualizace PULL, rutina pro každou provedenou Get-DscConfigurationStatus
operaci vyžádání hlásí typ operace jako konzistence , a ne jako počáteční.
Rozlišení: Žádný.
Invoke-DscResource rutina nevrací zprávu v pořadí, v jakém byla vytvořena
Rutina Invoke-DscResource
nevrací podrobné, varovné a chybové zprávy v pořadí, v jakém je vytvořil LCM nebo prostředek DSC.
Rozlišení: Žádný.
Prostředky DSC není možné snadno ladit při použití s Invoke-DscResource
Pokud LCM běží v režimu ladění, Invoke-DscResource
rutina neposkytuje informace o runspace pro připojení k ladění. Další informace najdete v tématu Ladění prostředků DSC.
Rozlišení: Pomocí rutin Get-PSHostProcessInfo
, Enter-PSHostProcess
Get-Runspace
a připojte se k runspace a Debug-Runspace
k ladění prostředku DSC.
# 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
Různé dokumenty částečné konfigurace pro stejný uzel nemůžou mít identické názvy prostředků.
U několika částečných konfigurací, které jsou nasazené na jednom uzlu, způsobují identické názvy prostředků chybu za běhu.
Rozlišení: Pro stejné prostředky v různých částečných konfiguracích používejte různé názvy.
Start-DscConfiguration –UseExisting nefunguje s -Credential
Při použití Start-DscConfiguration
s parametrem UseExisting se parametr Credential ignoruje. DSC k pokračování operace používá výchozí identitu procesu. To způsobí chybu, když jsou k pokračování na vzdáleném uzlu potřeba jiné přihlašovací údaje.
Rozlišení: Použití relace CIM pro vzdálené operace DSC:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
Adresy IPv6 jako názvy uzlů v konfiguracích DSC
Adresy IPv6 jako názvy uzlů v konfiguračních skriptech DSC nejsou v této verzi podporované.
Rozlišení: Žádný.
Ladění Class-Based
prostředků DSC
Tato verze nepodporuje ladění prostředků DSC založených na třídě.
Rozlišení: Žádný.
Proměnné a funkce definované v oboru $script v prostředku DSC Class-Based se nezachovají napříč několika voláními prostředku DSC.
Více po sobě jdoucích volání Start-DSCConfiguration
selže, pokud konfigurace používá prostředek založený na třídě, který má proměnné nebo funkce definované v $script
oboru.
Rozlišení: Definujte všechny proměnné a funkce v samotné třídě prostředků DSC. Žádné $script
proměnné nebo funkce oboru.
Ladění prostředků DSC, když prostředek používá PSDscRunAsCredential
Ladění prostředků DSC, když prostředek používá vlastnost PSDscRunAsCredential v konfiguraci, se v této verzi nepodporuje.
Rozlišení: Žádný.
Složené prostředky DSC nepodporují PsDscRunAsCredential.
Rozlišení: Pokud je k dispozici, použijte vlastnost Přihlašovací údaje. Example ServiceSet and WindowsFeatureSet
Get-DscResource -Syntaxe správně nezobrazuje přihlašovací údaje PsDscRunAsCredential.
Parametr Syntax nereflektuje PsDscRunAsCredential správně, pokud ho prostředek označí jako povinný nebo ho nepodporuje.
Rozlišení: Žádný. Konfigurace vytváření v prostředí ISE však při použití IntelliSense odráží správná metadata o vlastnosti PsDscRunAsCredential .
WindowsOptionalFeature není k dispozici ve Windows 7
Prostředek WindowsOptionalFeature DSC není ve Windows 7 k dispozici. Tento prostředek vyžaduje modul DISM a rutiny DISM, které jsou dostupné od Windows 8 a novějších verzích operačního systému Windows.
U prostředků DSC založených na třídě nemusí Import-DscResource -ModuleVersion fungovat podle očekávání.
Pokud má uzel kompilace více verzí modulu prostředků DSC založeného na třídě, Import-DscResource -ModuleVersion
nevybere zadanou verzi a výsledkem je následující chyba kompilace.
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
Rozlišení: Importujte požadovanou verzi definováním objektu ModuleSpecification do parametru ModuleName s klíčem RequiredVersion zadaným takto:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Zpracování některých prostředků DSC, jako je prostředek registru, může trvat dlouhou dobu.
Řešení 1: Create naplánovanou úlohu, která pravidelně čistí následující složku.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
Řešení 2: Změňte konfiguraci DSC tak, aby se na konci konfigurace vyčistila složka CommandAnalysis .
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'
}
}