kända problem och begränsningar för Desired State Configuration (DSC)

Icke-bakåtkompatibel ändring: Certifikat som används för att kryptera/dekryptera lösenord i DSC-konfigurationer kanske inte fungerar efter installation av WMF 5.0 RTM

I förhandsversionerna av WMF 4.0 och WMF 5.0 tillåter DSC inte att lösenorden i konfigurationen är längre än 121 tecken. DSC tvingade att använda korta lösenord även om långa och starka lösenord önskades. Den här icke-bakåtkompatibla ändringen gör att lösenord kan vara av godtycklig längd i DSC-konfigurationen.

Upplösning: Återskapa certifikatet med användning av datachiffrering eller nyckelchiffreringsnyckel och förbättrad nyckelanvändning för dokumentkryptering (1.3.6.1.4.1.311.80.1). Mer information finns i Protect-CmsMessage.

DSC-cmdletar kan misslyckas efter installation av WMF 5.0 RTM

Start-DscConfiguration och andra DSC-cmdletar kan misslyckas efter installation av WMF 5.0 RTM med följande fel:

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

Upplösning: Ta bort DSCEngineCache.mof genom att köra följande kommando i en upphöjd PowerShell-session (Kör som administratör):

Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof

DSC-cmdletar kanske inte fungerar om WMF 5.0 RTM är installerat ovanpå WMF 5.0 Production Preview

Upplösning: Kör följande kommando i en upphöjd PowerShell-session (kör som administratör):

mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof

LCM kan hamna i ett instabilt tillstånd när Get-DscConfiguration används i DebugMode

Om LCM är i DebugMode kan om du trycker på CTRL + C för att stoppa bearbetningen av Get-DscConfiguration göra att LCM hamnar i ett instabilt tillstånd så att de flesta DSC-cmdletar inte fungerar.

Upplösning: Tryck inte på CTRL+C vid felsökning Get-DscConfiguration av cmdlet.

Stop-DscConfiguration kanske inte svarar i DebugMode

Om LCM finns i DebugMode kanske Stop-DscConfiguration inte svarar vid försök att stoppa en åtgärd som startats av Get-DscConfiguration

Upplösning: Slutför felsökningen av åtgärden som startades av enligt beskrivningen i Felsökning av Get-DscConfigurationDSC-resurser.

Inga utförliga felmeddelanden visas i DebugMode

Om LCM finns i DebugMode visas inga utförliga felmeddelanden från DSC-resurser.

Upplösning: Inaktivera DebugMode om du vill se utförliga meddelanden från resursen

Invoke-DscResource åtgärder kan inte hämtas med Get-DscConfigurationStatus cmdlet

När du har använt Invoke-DscResource cmdleten för att direkt anropa någon resurss metoder kan posterna för den här åtgärden inte hämtas via Get-DscConfigurationStatus.

Upplösning: Ingen.

Get-DscConfigurationStatus returnerar pull-cykelåtgärder som typkonsekvens

När en nod är inställd på PULL-uppdateringsläge rapporterar cmdleten för varje pull-åtgärd Get-DscConfigurationStatus som konsekvens i stället för Initial

Upplösning: Ingen.

Invoke-DscResource-cmdleten returnerar inte meddelandet i den ordning de producerades

Cmdleten Invoke-DscResource returnerar inte utförliga, varnings- och felmeddelanden i den ordning de producerades av LCM eller DSC-resursen.

Upplösning: Ingen.

DSC-resurser kan inte felsökas enkelt när de används med Invoke-DscResource

När LCM körs i felsökningsläge Invoke-DscResource ger cmdleten inte information om runspace att ansluta till för felsökning. Mer information finns i Felsöka DSC-resurser.

Upplösning: Identifiera och koppla till runspace med hjälp av cmdletar Get-PSHostProcessInfo, Get-RunspaceEnter-PSHostProcess och Debug-Runspace för att felsöka DSC-resursen.

# 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

Olika partiella konfigurationsdokument för samma nod kan inte ha identiska resursnamn

För flera partiella konfigurationer som distribueras till en enda nod orsakar identiska namn på resurser körningstidsfel.

Upplösning: Använd olika namn för även samma resurser i olika partiella konfigurationer.

Start-DscConfiguration – UseExisting fungerar inte med -Credential

När du använder Start-DscConfiguration med parametern UseExisting ignoreras parametern Credential . DSC använder standardprocessidentiteten för att fortsätta åtgärden. Detta orsakar fel när en annan autentiseringsuppgift behövs för att fortsätta på fjärrnoden.

Upplösning: Använd CIM-session för fjärr-DSC-åtgärder:

$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session

IPv6-adresser som nodnamn i DSC-konfigurationer

IPv6-adresser som nodnamn i DSC-konfigurationsskript stöds inte i den här versionen.

Upplösning: Ingen.

Felsökning av Class-Based DSC-resurser

Felsökning av klassbaserade DSC-resurser stöds inte i den här versionen.

Upplösning: Ingen.

Variabler och funktioner som definierats i $script omfång i DSC Class-Based Resurs bevaras inte över flera anrop till en DSC-resurs

Flera efterföljande anrop till Start-DSCConfiguration misslyckas om konfigurationen använder en klassbaserad resurs som har variabler eller funktioner som definierats i $script omfånget.

Upplösning: Definiera alla variabler och funktioner i själva DSC-resursklassen. Inga $script omfångsvariabler/funktioner.

DSC-resursfelsökning när en resurs använder PSDscRunAsCredential

DSC-resursfelsökning när en resurs använder egenskapen PSDscRunAsCredential i konfigurationen stöds inte i den här versionen.

Upplösning: Ingen.

PsDscRunAsCredential stöds inte för DSC-sammansatta resurser

Upplösning: Använd egenskapen Credential om det är tillgängligt. Exempel på ServiceSet och WindowsFeatureSet

Get-DscResource - Syntaxen återspeglar inte PsDscRunAsCredential korrekt

Syntaxparametern återspeglar inte PsDscRunAsCredential korrekt när resursen markerar den som obligatorisk eller inte stöder den.

Upplösning: Ingen. Redigeringskonfigurationen i ISE återspeglar dock korrekta metadata om egenskapen PsDscRunAsCredential när du använder IntelliSense.

WindowsOptionalFeature är inte tillgängligt i Windows 7

WindowsOptionalFeature DSC-resursen är inte tillgänglig i Windows 7. Den här resursen kräver DISM-modulen och DISM-cmdletar som är tillgängliga från och med Windows 8 och nyare versioner av Windows-operativsystemet.

För klassbaserade DSC-resurser kanske Import-DscResource -ModuleVersion inte fungerar som förväntat

Om kompileringsnoden har flera versioner av en klassbaserad DSC-resursmodul Import-DscResource -ModuleVersion väljer du inte den angivna versionen och resulterar i följande kompileringsfel.

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

Upplösning: Importera den version som krävs genom att definiera ModuleSpecification-objektet till parametern ModuleName med nyckeln RequiredVersion angiven på följande sätt:

Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}

Vissa DSC-resurser som registerresursen kan börja ta lång tid att bearbeta begäran.

Lösning 1: Skapa en schemauppgift som regelbundet rensar följande mapp.

$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis

Lösning 2: Ändra DSC-konfigurationen för att rensa mappen CommandAnalysis i slutet av konfigurationen.

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