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