Desired State Configuration (DSC) Znane problemy i ograniczenia
Zmiana przerywana: Certyfikaty używane do szyfrowania/odszyfrowywania haseł w konfiguracjach DSC mogą nie działać po zainstalowaniu programu WMF 5.0 RTM
W wersjach zapoznawczych programu WMF 4.0 i WMF 5.0 konfiguracja DSC nie zezwala na hasła o długości większej niż 121 znaków. DsC był wymuś użycie krótkich haseł, nawet jeśli wymagane było długie i silne hasło. Ta zmiana przerywania umożliwia hasła o dowolnej długości w konfiguracji DSC.
Rozwiązanie: Utwórz ponownie certyfikat przy użyciu szyfrowania danych lub klucza szyfrowania i rozszerzonego użycia klucza szyfrowania dokumentów (1.3.6.1.4.1.311.80.1). Aby uzyskać więcej informacji, zobacz Protect-CmsMessage.
Polecenia cmdlet DSC mogą się nie powieść po zainstalowaniu programu WMF 5.0 RTM
Start-DscConfiguration
i inne polecenia cmdlet DSC mogą ulec awarii po zainstalowaniu programu WMF 5.0 RTM z następującym błędem:
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
Rozwiązanie: Usuń plik DSCEngineCache.mof, uruchamiając następujące polecenie w sesji programu PowerShell z podwyższonym poziomem uprawnień (Uruchom jako administrator):
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
Polecenia cmdlet DSC mogą nie działać, jeśli program WMF 5.0 RTM jest zainstalowany w wersji produkcyjnej programu WMF 5.0
Rozwiązanie: Uruchom następujące polecenie w sesji programu PowerShell z podwyższonym poziomem uprawnień (uruchom jako administrator):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
LcM może przejść w stan niestabilny podczas korzystania z Get-DscConfiguration w trybie DebugMode
Jeśli tryb LCM jest w trybie DebugMode, naciśnięcie kombinacji klawiszy CTRL +C w celu zatrzymania przetwarzania może spowodować niestabilność narzędzia LCM w taki sposób, że większość polecenia Get-DscConfiguration
cmdlet DSC nie będzie działać.
Rozwiązanie: Nie naciskaj klawiszy CTRL+C podczas debugowania Get-DscConfiguration
polecenia cmdlet.
Stop-DscConfiguration może nie odpowiadać w trybie DebugMode
Jeśli lcm jest w trybie DebugMode, może nie odpowiadać podczas próby Stop-DscConfiguration
zatrzymania operacji uruchomionej przez Get-DscConfiguration
Rozwiązanie: Zakończ debugowanie operacji rozpoczętej przez , Get-DscConfiguration
jak opisano w części Debugowanie zasobów DSC.
W trybie DebugMode nie są wyświetlane żadne pełne komunikaty o błędach
Jeśli lcm jest w trybie DebugMode, nie są wyświetlane żadne pełne komunikaty o błędach z zasobów DSC.
Rozwiązanie: Wyłącz tryb DebugMode, aby wyświetlić pełne komunikaty z zasobu
Invoke-DscResource nie można pobrać operacji przy Get-DscConfigurationStatus cmdlet
Po użyciu polecenia cmdlet do bezpośredniego wywoływania metod dowolnego zasobu nie można pobrać rekordów takiej operacji za Invoke-DscResource
pośrednictwem metody Get-DscConfigurationStatus
.
Rozwiązanie: Brak.
Get-DscConfigurationStatus zwraca operacje cyklu ściągania jako typ Spójność
Gdy węzeł jest ustawiony na tryb odświeżania ŚCIĄGANIA, dla każdej wykonanej operacji ściągania polecenie cmdlet zgłasza typ operacji Get-DscConfigurationStatus
jako Spójność zamiast Initial
Rozwiązanie: Brak.
Invoke-DscResource cmdlet nie zwraca komunikatu w kolejności ich produkcji
Polecenie cmdlet nie zwraca pełnych, ostrzegawczych i komunikatów o błędach w kolejności, w których zostały one wytłane przez Invoke-DscResource
lcm lub zasób DSC.
Rozwiązanie: Brak.
Zasobów DSC nie można łatwo debugować w przypadku korzystania z Invoke-DscResource
Gdy narzędzie LCM jest uruchomione w trybie debugowania, polecenie cmdlet nie zawiera informacji o przestrzeni uruchamiania, z którym ma nawiązać połączenie Invoke-DscResource
na potrzeby debugowania. Aby uzyskać więcej informacji, zobacz Debugowanie zasobów DSC.
Rozwiązanie: Odnajdywanie i dołączanie do przestrzeni uruchamiania przy użyciu polecenia cmdlet , i w celu Get-PSHostProcessInfo
Enter-PSHostProcess
Get-Runspace
Debug-Runspace
debugowania zasobu 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
Różne dokumenty częściowej konfiguracji dla tego samego węzła nie mogą mieć identycznych nazw zasobów
W przypadku kilku częściowych konfiguracji wdrożonych w jednym węźle identyczne nazwy zasobów powodują błąd czasu działania.
Rozwiązanie: Użyj różnych nazw dla tych samych zasobów w różnych konfiguracjach częściowych.
Start-DscConfiguration — useExisting nie działa z -Credential
W przypadku Start-DscConfiguration
korzystania z parametru UseExisting parametr Credential jest ignorowany. DsC używa domyślnej tożsamości procesu, aby kontynuować operację. Powoduje to błąd, gdy do kontynuowania pracy w węźle zdalnym jest wymagane inne poświadczenie.
Rozwiązanie: Użyj sesji modelu CIM dla zdalnych operacji DSC:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
Adresy IPv6 jako nazwy węzłów w konfiguracjach DSC
Adresy IPv6 jako nazwy węzłów w skryptach konfiguracji DSC nie są obsługiwane w tej wersji.
Rozwiązanie: Brak.
Debugowanie Class-Based
zasobów DSC
Debugowanie zasobów DSC opartych na klasach nie jest obsługiwane w tej wersji.
Rozwiązanie: Brak.
Zmienne i funkcje zdefiniowane w zakresie $script w zasobie Class-Based DSC nie są zachowywane w wielu wywołaniach zasobu DSC
Wiele kolejnych wywołań kończy się niepowodzeniem, jeśli konfiguracja używa dowolnego zasobu opartego na klasie, który ma zmienne Start-DSCConfiguration
lub funkcje zdefiniowane w $script
zakresie.
Rozwiązanie: Zdefiniuj wszystkie zmienne i funkcje w samej klasie zasobów DSC. Brak $script
zmiennych/funkcji zakresu.
Debugowanie zasobów DSC, gdy zasób używa klasy PSDscRunAsCredential
Debugowanie zasobów DSC, gdy zasób używa właściwości PSDscRunAsCredential w konfiguracji, nie jest obsługiwane w tej wersji.
Rozwiązanie: Brak.
Element PsDscRunAsCredential nie jest obsługiwany w przypadku zasobów złożonych DSC
Rozwiązanie: Użyj właściwości Credential, jeśli jest dostępna. Przykładowe zestawy usług i zestaw WindowsFeatureSet
Get-DscResource - Składnia nie odzwierciedla Poprawnie PsDscRunAsCredential
Parametr Składnia nie odzwierciedla poprawnie parametru PsDscRunAsCredential, gdy zasób oznacza go jako obowiązkowy lub go nie obsługuje.
Rozwiązanie: Brak. Jednak konfiguracja tworzenia w programie ISE odzwierciedla poprawne metadane dotyczące właściwości PsDscRunAsCredential podczas korzystania z funkcji IntelliSense.
Funkcja WindowsOptionalFeature nie jest dostępna w wersji Windows 7
Zasób DSC WindowsOptionalFeature nie jest dostępny w wersji Windows 7. Ten zasób wymaga modułu DISM i polecenia cmdlet DISM, które są dostępne w Windows 8 i nowszej wersji Windows operacyjnego.
W przypadku zasobów DSC opartych na klasach Import-DscResource -ModuleVersion może nie działać zgodnie z oczekiwaniami
Jeśli węzeł kompilacji ma wiele wersji modułu zasobów DSC opartego na klasie, program nie wybiera określonej wersji i Import-DscResource -ModuleVersion
powoduje następujący błąd kompilacji.
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
Rozwiązanie: Zaimportuj wymaganą wersję, definiując obiekt ModuleSpecification do parametru ModuleName z kluczem RequiredVersion określonym w następujący sposób:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Przetwarzanie żądania przez niektóre zasoby DSC, takie jak zasób rejestru, może zająć dużo czasu.
Rozwiązanie 1: Utwórz zadanie harmonogramu, które okresowo czyści następujący folder.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
Rozwiązanie 2. Zmień konfigurację DSC, aby wyczyścić folder CommandAnalysis na końcu konfiguracji.
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'
}
}
Opinia
Prześlij i wyświetl opinię dla