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-DscConfiguration
DSC-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-Runspace
Enter-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 upp 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'
}
}