Sdílet prostřednictvím


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-PSHostProcessGet-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'
    }
}