Limitações e problemas conhecidos do DSC (Configuração de Estado Desejado)Desired State Configuration (DSC) Known Issues and Limitations

Alteração interruptiva: os certificados usados para criptografar/descriptografar senhas em configurações DSC podem não funcionar após a instalação do WMF 5.0 RTMBreaking Change: Certificates used to encrypt/decrypt passwords in DSC configurations may not work after installing 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.In WMF 4.0 and WMF 5.0 Preview releases, DSC would not allow passwords in the configuration to be of length more than 121 characters. O DSC forçava o uso de senhas curtas, mesmo que fosse desejável usar senhas longas e fortes.DSC was forcing to use short passwords even if lengthy and strong password was desired. Essa alteração interruptiva permite que as senhas tenham um tamanho arbitrário na configuração DSC.This breaking change allows passwords to be of arbitrary length in the DSC configuration.

Resolução: crie novamente o certificado com o 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).Resolution: Re-create the certificate with Data Encipherment or Key Encipherment Key usage, and Document Encryption Enhanced Key usage (1.3.6.1.4.1.311.80.1). O artigo do TechNet https://technet.microsoft.com/pt-br/library/dn807171.aspx tem mais informações.Technet article https://technet.microsoft.com/en-us/library/dn807171.aspx has more information.

Os cmdlets do DSC poderão falhar após a instalação do WMF 5.0 RTMDSC cmdlets may fail after installing WMF 5.0 RTM

Start-DscConfiguration e outros cmdlets do DSC poderão falhar após a instalação do WMF 5.0 RTM com o seguinte erro:Start-DscConfiguration and other DSC cmdlets may fail after installing WMF 5.0 RTM with the following error:

    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):Resolution: Delete DSCEngineCache.mof by running the following command in an elevated PowerShell session (Run as Administrator):

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.0DSC cmdlets may not work if WMF 5.0 RTM is installed on top of WMF 5.0 Production Preview

Resolução: execute o seguinte comando em uma sessão do PowerShell com privilégios elevados (executar como administrador):Resolution: Run the following command in an elevated PowerShell session (run as administrator):

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

O LCM pode entrar em um estado instável durante o uso de Get-DscConfiguration em DebugModeLCM can go into an unstable state while using Get-DscConfiguration in 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 em que a maioria dos cmdlets do DSC não funcionará.If LCM is in DebugMode, pressing CTRL+C to stop the processing of Get-DscConfiguration can cause LCM to go into an unstable state such that majority of DSC cmdlets won’t work.

Resolução: não pressione CTRL+C durante a depuração do cmdlet Get-DscConfiguration.Resolution: Don’t press CTRL+C while debugging Get-DscConfiguration cmdlet.

Stop-DscConfiguration poderá parar de responder em DebugModeStop-DscConfiguration may hang in DebugMode

Se o LCM estiver em DebugMode, Stop-DscConfiguration poderá parar de responder durante a tentativa de interromper uma operação iniciada por Get-DscConfigurationIf LCM is in DebugMode, Stop-DscConfiguration may hang while trying to stop an operation started by Get-DscConfiguration

Resolução: conclua a depuração da operação iniciada por Get-DscConfiguration, conforme descrito na seção "Depurando recursos DSC".Resolution: Finish the debugging of the operation started by Get-DscConfiguration as outlined in section ‘Debugging DSC resources’.

Nenhuma mensagem de erro detalhada é mostrada em DebugModeNo Verbose Error Messages are shown in DebugMode

Se o LCM estiver em DebugMode, nenhuma mensagem de erro detalhada será exibida nos Recursos DSC.If LCM is in DebugMode, no verbose error messages are displayed from DSC Resources.

Resolução: desabilite DebugMode para ver as mensagens detalhadas no recursoResolution: Disable DebugMode to see verbose messages from the resource

As operações Invoke-DscResource não podem ser recuperadas pelo cmdlet Get-DscConfigurationStatusInvoke-DscResource operations cannot be retrieved by Get-DscConfigurationStatus cmdlet

Depois de usar o cmdlet Invoke-DscResource para invocar diretamente os métodos de qualquer recurso, os registros dessa operação não poderão ser recuperados por meio de Get-DscConfigurationStatus em um momento posterior.After using Invoke-DscResource cmdlet to directly invoke any resource’s methods, the records of such operation cannot be retrieved through Get-DscConfigurationStatus at a later time.

Resolução: nenhuma.Resolution: None.

Get-DscConfigurationStatus retorna operações de ciclo de pull como o tipo ConsistênciaGet-DscConfigurationStatus returns pull cycle operations as type Consistency

Quando um nó é definido como o modo de atualização por PULL, para cada operação de recepção realizada, o cmdlet Get-DscConfigurationStatus relata o tipo de operação como Consistência em vez de InicialWhen a node is set to PULL refresh mode, for each pull operation performed, Get-DscConfigurationStatus cmdlet reports the operation type as Consistency instead of Initial

Resolução: nenhuma.Resolution: None.

O cmdlet Invoke-DscResource não retorna as mensagens na ordem em que foram produzidasInvoke-DscResource cmdlet does not return message in the order they were produced

O cmdlet Invoke-DscResource não retorna mensagens detalhadas, de aviso e de erro na ordem em que foram produzidas pelo LCM ou pelo recurso DSC.The Invoke-DscResource cmdlet does not return verbose, warning, and error messages in the order they were produced by LCM or the DSC resource.

Resolução: nenhuma.Resolution: None.

Os Recursos DSC não podem ser depurados com facilidade quando usados com Invoke-DscResourceDSC Resources cannot be debugged easily when used with Invoke-DscResource

Quando o LCM estiver sendo executado no modo de depuração (veja Depurando recursos DSC para obter mais detalhes), o cmdlet Invoke-DscResource não fornecerá informações sobre o runspace para se conectar para realizar a depuração.When LCM is running in debug mode (see Debugging DSC resources for more details), Invoke-DscResource cmdlet does not give information about runspace to connect to for debugging. Resolução: descubra e anexe-se ao runspace usando os cmdlets Get-PSHostProcessInfo, Enter-PSHostProcess, Get-Runspace e Debug-Runspace para depurar o recurso DSC.Resolution: Discover and attach to the runspace using cmdlets Get-PSHostProcessInfo, Enter-PSHostProcess , Get-Runspace and Debug-Runspace to debug the DSC resource.

# 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ênticosVarious Partial Configuration documents for same node cannot have identical resource names

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.For several partial configurations that are deployed onto a single node, identical names of resources cause run time error.

Resolução: use nomes diferentes até para os mesmos recursos em configurações parciais diferentes.Resolution: Use different names for even same resources in different partial configurations.

–UseExisting de Start-DscConfiguration não funciona com –CredentialStart-DscConfiguration –UseExisting does not work with -Credential

Ao usar Start-DscConfiguration com o parâmetro –UseExisting, o parâmetro –Credential é ignorado.When using Start-DscConfiguration with –UseExisting parameter, the –Credential parameter is ignored. O DSC usa a identidade de processo padrão para continuar a operação.DSC uses default process identity to proceed the operation. Isso causa erros quando uma credencial diferente é necessária para continuar no nó remoto.This causes error when a different credential is needed to proceed on remote node.

Resolução: use a sessão CIM para operações do DSC remotas:Resolution: Use CIM session for remote DSC operations:

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

Endereços IPv6 como Nomes de Nó em configurações DSCIPv6 Addresses as Node Names in DSC configurations

Nesta versão, não há suporte para endereços IPv6 como nomes de nó em scripts de configuração DSC.IPv6 addresses as node names in DSC configuration scripts are not supported in this release.

Resolução: nenhuma.Resolution: None.

Depuração de recursos DSC baseados em classeDebugging of Class-Based DSC Resources

Nesta versão, não há suporte para a depuração de recursos DSC baseados em classe.Debugging of class-based DSC Resources is not supported in this release.

Resolução: nenhuma.Resolution: None.

As variáveis e funções definidas no escopo de $script no Recurso DSC Baseado em Classe não são preservadas em várias chamadas para um Recurso DSCVariables & Functions defined in $script scope in DSC Class-Based Resource are not preserved across multiple calls to a DSC Resource

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.Multiple consecutive calls to Start-DSCConfiguration will fail if configuration is using any class-based resource which has variables or functions defined in $script scope.

Resolução: defina todas as variáveis e funções na própria classe do Recurso DSC.Resolution: Define all variables and functions in DSC Resource class itself. Nenhuma variável/função do escopo de $script.No $script scope variables/functions.

Depuração do Recurso DSC quando um recurso estiver usando PSDscRunAsCredentialDSC Resource Debugging when a resource is using PSDscRunAsCredential

Nesta versão, não há suporte para a depuração do Recurso DSC quando um recurso usa a propriedade PSDscRunAsCredential na configuração.DSC Resource debugging when a resource is using the PSDscRunAsCredential property in the configuration is not suported in this release.

Resolução: nenhuma.Resolution: None.

Não há suporte para PsDscRunAsCredential nos recursos de composição DSCPsDscRunAsCredential is not supported for DSC Composite Resources

Resolução: use a propriedade Credential se estiver disponível.Resolution: Use Credential property if available. ServiceSet e WindowsFeatureSet de exemploExample ServiceSet and WindowsFeatureSet

Get-DscResource -Syntax não reflete PsDscRunAsCredential corretamenteGet-DscResource -Syntax does not reflect PsDscRunAsCredential correctly

Get-DscResource -Syntax não reflete PsDscRunAsCredential corretamente quando o recurso o marca como obrigatório ou não dá suporte a ele.Get-DscResource -Syntax does not reflect PsDscRunAsCredential correctly when resource marks it as mandatory or does not support it.

Resolução: nenhuma.Resolution: None. No entanto, a criação de configuração no ISE reflete metadados corretos sobre a propriedade PsDscRunAsCredential ao usar o IntelliSense.However, authoring configuration in ISE reflects correct metadata about PsDscRunAsCredential property when using IntelliSense.

WindowsOptionalFeature não está disponível no Windows 7WindowsOptionalFeature is not available in Windows 7

O recurso DSC de WindowsOptionalFeature não está disponível no Windows 7.The WindowsOptionalFeature DSC resource is not available in 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.This resource requires the DISM module, and DISM cmdlets that are available starting in Windows 8 and newer releases of the Windows operating system.

Para obter recursos de DSC baseados em classes, Import-DscResource -ModuleVersion pode não funcionar como esperadoFor Class-based DSC resources, Import-DscResource -ModuleVersion may not work as expected

Se o nó compilação tiver várias versões de um módulo de recurso de DSC baseado em classes, o Import-DscResource -ModuleVersion não selecionará a versão especificada e resulta no seguinte erro de compilação.If the compilation node has multiple version of a class-based DSC resource module, Import-DscResource -ModuleVersion does not pick the specified version and results in following compilation error.

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 -ModuleName com a chave RequiredVersion especificada da seguinte maneira:Resolution: Import the required version by defining the ModuleSpecification object to the -ModuleName with RequiredVersion key specified as follows:

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.Some DSC resources like registry resource may start to take a long time to process the request.

Resolution1: criar uma tarefa agendada que limpa periodicamente a pasta a seguir.Resolution1: Create a schedule task that cleans up the following folder periodically.

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

Resolution2: alterar a configuração DSC para limpar a pasta CommandAnalysis no final da configuração.Resolution2: Change the DSC configuration to clean up the CommandAnalysis folder at the end of the configuration.

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