Partilhar via


Problemas Conhecidos e Limitações do Desired State Configuration (DSC)

Alteração Interruptiva: os certificados utilizados para encriptar/desencriptar palavras-passe em configurações DSC podem não funcionar após a instalação do WMF 5.0 RTM

Nas versões de Pré-visualização do WMF 4.0 e WMF 5.0, o DSC não permitiria que as palavras-passe na configuração tenham um comprimento superior a 121 carateres. O DSC estava a forçar a utilização de palavras-passe curtas, mesmo que fosse desejada uma palavra-passe longa e forte. Esta alteração interruptiva permite que as palavras-passe sejam de comprimento arbitrário na configuração do DSC.

Resolução: Recrie o certificado com a utilização da Chave de Enciframento de Dados ou chave de enciframento de chaves e a utilização da Chave Avançada de Encriptação de Documentos (1.3.6.1.4.1.311.80.1). Para obter mais informações, veja Protect-CmsMessage.

Os cmdlets DSC podem falhar após a instalação do WMF 5.0 RTM

Start-DscConfiguration e outros cmdlets DSC podem falhar após a instalação do WMF 5.0 RTM com o seguinte erro:

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

Resolução: Elimine DSCEngineCache.mof ao executar o seguinte comando numa sessão elevada do PowerShell (Executar como Administrador):

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

Os cmdlets DSC poderão não funcionar se o WMF 5.0 RTM estiver instalado sobre a Pré-visualização de Produção do WMF 5.0

Resolução: Execute o seguinte comando numa sessão elevada do PowerShell (execute como administrador):

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

O LCM pode entrar num estado instável ao utilizar Get-DscConfiguration em DebugMode

Se o LCM estiver em DebugMode, premir CTRL+C para parar o processamento de Get-DscConfiguration pode fazer com que o LCM entre num estado instável de modo a que a maioria dos cmdlets DSC não funcione.

Resolução: Não prima CTRL+C durante a depuração Get-DscConfiguration do cmdlet.

Stop-DscConfiguration pode não responder em DebugMode

Se o LCM estiver em DebugMode, Stop-DscConfiguration poderá não responder ao tentar parar uma operação iniciada pelo Get-DscConfiguration

Resolução: Conclua a depuração da operação iniciada pelo Get-DscConfiguration , conforme descrito em Depurar recursos do DSC.

Não são apresentadas Mensagens de Erro Verbosas no DebugMode

Se o LCM estiver em DebugMode, não serão apresentadas mensagens de erro verbosas a partir dos Recursos do DSC.

Resolução: Desativar DebugMode para ver mensagens verbosas do recurso

Invoke-DscResource operações não podem ser obtidas pelo cmdlet Get-DscConfigurationStatus

Depois de utilizar Invoke-DscResource o cmdlet para invocar diretamente os métodos de qualquer recurso, os registos dessa operação não podem ser obtidos através de Get-DscConfigurationStatus.

Resolução: Nenhum.

Get-DscConfigurationStatus devolve operações de ciclo de solicitação como tipo Consistência

Quando um nó está definido como modo de atualização PULL, para cada operação de solicitação executada, Get-DscConfigurationStatus o cmdlet comunica o tipo de operação como Consistência em vez de Inicial

Resolução: Nenhum.

Invoke-DscResource cmdlet não devolve a mensagem pela ordem em que foram produzidos

O Invoke-DscResource cmdlet não devolve mensagens verbosas, de aviso e de erro pela ordem em que foram produzidas pelo LCM ou pelo recurso do DSC.

Resolução: Nenhum.

Os Recursos do DSC não podem ser depurados facilmente quando utilizados com Invoke-DscResource

Quando o LCM está em execução no modo de depuração, Invoke-DscResource o cmdlet não fornece informações sobre o runspace ao qual ligar para depuração. Para obter mais informações, veja Depurar recursos do DSC.

Resolução: Descubra e anexe ao espaço de execução com os cmdlets Get-PSHostProcessInfo, Enter-PSHostProcessGet-Runspace e Debug-Runspace para depurar o recurso do 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

Vários documentos de Configuração Parcial para o mesmo nó não podem ter nomes de recursos idênticos

Para várias configurações parciais que são implementadas num único nó, nomes idênticos de recursos causam um erro de tempo de execução.

Resolução: Utilize nomes diferentes para os mesmos recursos em diferentes configurações parciais.

Start-DscConfiguration –UseExisting não funciona com -Credential

Ao utilizar Start-DscConfiguration com o parâmetro UseExisting , o parâmetro Credential é ignorado. O DSC utiliza a identidade do processo predefinida para prosseguir com a operação. Isto causa um erro quando é necessária uma credencial diferente para continuar no nó remoto.

Resolução: Utilize a sessão CIM para operações DSC remotas:

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

Endereços IPv6 como Nomes de Nós nas configurações do DSC

Os endereços IPv6 como nomes de nós em scripts de configuração DSC não são suportados nesta versão.

Resolução: Nenhum.

Depuração de Recursos do Class-Based DSC

A depuração de Recursos DSC baseados em classes não é suportada nesta versão.

Resolução: Nenhum.

As variáveis e as funções definidas no âmbito $script no DSC Class-Based Recurso não são preservadas em várias chamadas para um Recurso do DSC

Várias chamadas consecutivas a Start-DSCConfiguration falhar se a configuração estiver a utilizar qualquer recurso baseado na classe que tenha variáveis ou funções definidas no $script âmbito.

Resolução: Defina todas as variáveis e funções na própria classe de Recursos do DSC. Sem $script variáveis/funções de âmbito.

Depuração de Recursos do DSC quando um recurso está a utilizar PSDscRunAsCredential

A depuração de Recursos do DSC quando um recurso está a utilizar a propriedade PSDscRunAsCredential na configuração não é suportada nesta versão.

Resolução: Nenhum.

O PsDscRunAsCredential não é suportado para Recursos Compostos do DSC

Resolução: Utilize a propriedade Credencial, se disponível. Exemplo de ServiceSet e WindowsFeatureSet

Get-DscResource -Sintaxe não reflete psDscRunAsCredential corretamente

O parâmetro Sintaxe não reflete psDscRunAsCredential corretamente quando o recurso o marca como obrigatório ou não o suporta.

Resolução: Nenhum. No entanto, a configuração de criação no ISE reflete metadados corretos sobre a propriedade PsDscRunAsCredential ao utilizar o IntelliSense.

WindowsOptionalFeature não está disponível no Windows 7

O recurso WindowsOptionalFeature DSC não está disponível no Windows 7. Este recurso requer o módulo DISM e os cmdlets DISM disponíveis a partir de Windows 8 e versões mais recentes do sistema operativo Windows.

Para recursos de DSC baseados em classes, Import-DscResource -ModuleVersion pode não funcionar conforme esperado

Se o nó de compilação tiver várias versões de um módulo de recurso do DSC baseado na classe, Import-DscResource -ModuleVersion não escolherá a versão especificada e resultará no seguinte erro de compilação.

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

Resolução: Importe a versão necessária ao definir o objeto ModuleSpecification para o parâmetro ModuleName com a chave RequiredVersion especificada da seguinte forma:

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

Alguns recursos do DSC, como o recurso de registo, podem começar a demorar muito tempo a processar o pedido.

Resolução 1: Create uma tarefa de agendamento que limpa periodicamente a seguinte pasta.

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

Resolução 2: Altere a configuração do DSC para limpar a pasta CommandAnalysis no final da configuração.

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