Limitações e problemas conhecidos do DSC (Configuração de Estado Desejado)
Alteração da falha: certificados usados para criptografar/descriptografar senhas em configurações de DSC podem não funcionar após a instalação do WMF 5.0 RTM
Em versões da Preview do WMF 4.0 e 5.0, o DSC não permite que as senhas na configuração tenham um tamanho maior que 121 caracteres. O DSC forçava o uso de senhas curtas, mesmo que fosse desejável usar senhas longas e fortes. Essa alteração interruptiva permite que as senhas tenham um tamanho arbitrário na configuração DSC.
Resolução: crie novamente o certificado com uso da Chave de Codificação de Dados ou de Codificação de Chave, bem como o uso Avançado de Chave de Criptografia de Documento (1.3.6.1.4.1.311.80.1). Saiba mais em Protect-CmsMessage.
Os cmdlets do DSC poderão falhar após a instalação do WMF 5.0 RTM
Podem ocorrer falhas em Start-DscConfiguration
e outros cmdlets do DSC 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: exclua DSCEngineCache.mof executando o seguinte comando em uma sessão do PowerShell com privilégios elevados (Executar como Administrador):
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
Os cmdlets do DSC poderão não funcionar se o WMF 5.0 RTM estiver instalado, além da Preview de Produção do WMF 5.0
Resolução: execute o seguinte comando em uma sessão do PowerShell com privilégios elevados (executar como administrador):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
O LCM pode entrar em um estado instável durante o uso de Get-DscConfiguration em DebugMode
Se o LCM estiver em DebugMode, pressionar CTRL+C para interromper o processamento de Get-DscConfiguration
poderá fazer com que o LCM entre em um estado instável, a tal ponto que a maioria dos cmdlets da DSC não funcionará.
Resolução: Não pressione CTRL+C durante a depuração do cmdlet Get-DscConfiguration
.
Stop-DscConfiguration poderá não responder em DebugMode
Se o LCM estiver em DebugMode, Stop-DscConfiguration
poderá não responder ao tentar interromper uma operação iniciada por Get-DscConfiguration
Resolução: conclua a depuração da operação iniciada por Get-DscConfiguration
, conforme descrito em Depurando os recursos de DSC.
Nenhuma mensagem de erro detalhada é mostrada em DebugMode
Se o LCM estiver em DebugMode, nenhuma mensagem de erro detalhada será exibida nos recursos de DSC.
Resolução: desabilite DebugMode para ver as mensagens detalhadas no recurso
As operações Invoke-DscResource não podem ser recuperadas pelo cmdlet Get-DscConfigurationStatus
Depois que o cmdlet Invoke-DscResource
for usado para chamar diretamente os métodos de um recurso, não será possível recuperar os registros dessa operação por meio de Get-DscConfigurationStatus
.
Resolução: Nenhum.
Get-DscConfigurationStatus retorna operações de ciclo de pull como o tipo Consistência
Quando um nó é definido como o modo de atualização por PULL, para cada operação de pull realizada, o cmdlet Get-DscConfigurationStatus
relata o tipo de operação como Consistência em vez de Inicial
Resolução: Nenhum.
O cmdlet Invoke-DscResource não retorna as mensagens na ordem em que foram produzidas
O cmdlet Invoke-DscResource
não retorna mensagens detalhadas, de aviso nem de erro na ordem em que foram produzidas pelo LCM ou pelo recurso de DSC.
Resolução: Nenhum.
Os Recursos DSC não podem ser depurados com facilidade quando usados com Invoke-DscResource
Ao executar o LCM no modo de depuração, o cmdlet Invoke-DscResource
não fornece informações sobre o runspace para se conectar para realizar a depuração. Para obter mais informações, veja Depurando os recursos de DSC.
Resolução: Descubra e anexe ao runspace usando os cmdlets Get-PSHostProcessInfo
, Enter-PSHostProcess
, Get-Runspace
e Debug-Runspace
para depurar o recurso de 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 implantadas em um único nó, nomes idênticos de recursos causam um erro de tempo de execução.
Resolução: use nomes diferentes até mesmo para os mesmos recursos em configurações parciais diferentes.
–UseExisting de Start-DscConfiguration não funciona com –Credential
Ao usar Start-DscConfiguration
com o parâmetro UseExisting, o parâmetro Credential é ignorado. O DSC usa a identidade de processo padrão para continuar a operação. Isso causa erros quando uma credencial diferente é necessária para continuar no nó remoto.
Resolução: use a sessão CIM para operações de DSC remotas:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
Endereços IPv6 como Nomes de Nó em configurações DSC
Nesta versão, não há suporte para endereços IPv6 como nomes de nó em scripts de configuração DSC.
Resolução: Nenhum.
Depurando os recursos de DSC Class-Based
Nesta versão, não há suporte para a depuração de recursos DSC baseados em classe.
Resolução: Nenhum.
As variáveis e funções definidas no escopo de $script no Recurso de DSC Baseado em Classe não são preservadas em várias chamadas para um Recurso de DSC
Várias chamadas consecutivas para Start-DSCConfiguration
falharão se a configuração estiver usando qualquer recurso baseado em classe que tenha variáveis ou funções definidas no escopo de $script
.
Resolução: defina todas as variáveis e funções na própria classe do Recurso DSC. Nenhuma variável/função do escopo de $script
.
Depuração do Recurso DSC quando um recurso estiver usando PSDscRunAsCredential
Nesta versão, não há suporte para a depuração do Recurso de DSC quando um recurso usa a propriedade PSDscRunAsCredential na configuração.
Resolução: Nenhum.
Não há suporte para PsDscRunAsCredential nos recursos de composição DSC
Resolução: use a propriedade Credential se estiver disponível. ServiceSet e WindowsFeatureSet de exemplo
Get-DscResource -Syntax não reflete PsDscRunAsCredential corretamente
O parâmetro Syntax não reflete PsDscRunAsCredential corretamente quando o recurso o marca como obrigatório ou não dá suporte a ele.
Resolução: Nenhum. No entanto, a criação da configuração no ISE reflete metadados corretos sobre a propriedade PsDscRunAsCredential ao usar o IntelliSense.
WindowsOptionalFeature não está disponível no Windows 7
O recurso de DSC WindowsOptionalFeature não está disponível no Windows 7. Este recurso exige o módulo DISM e os cmdlets do DISM que estão disponíveis começando do Windows 8 e versões mais recentes do sistema operacional Windows.
Para obter recursos de DSC baseados em classes, Import-DscResource -ModuleVersion pode não funcionar como esperado
Se o nó compilação tiver várias versões de um módulo de recurso de DSC baseado em classes, Import-DscResource -ModuleVersion
não selecionará a versão especificada e isso levará ao 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 definindo o objeto ModuleSpecification para o parâmetro ModuleName com a chave RequiredVersion especificada da seguinte maneira:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Alguns recursos DSC, como recursos de Registro podem começar a levar muito tempo para processar a solicitação.
Resolução 1: crie uma tarefa agendada que limpa periodicamente a pasta a seguir.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
Resolução 2: altere a configuração de 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'
}
}