Desired State Configuration (DSC) Bilinen Sorunlar ve Sınırlamalar
Hataya Neden Olan Değişiklik: DSC yapılandırmalarında parolaları şifrelemek/şifresini çözmek için kullanılan sertifikalar WMF 5.0 RTM yüklendikten sonra çalışmayabilir
WMF 4.0 ve WMF 5.0 Preview sürümlerinde DSC, yapılandırmadaki parolaların 121 karakterden uzun olmasını sağlamaz. DSC, uzun ve güçlü parola istense bile kısa parolalar kullanmaya zorlardı. Bu hataya neden olan değişiklik, parolaların DSC yapılandırmasında rastgele uzunlukta olmasını sağlar.
Çözünürlük: Sertifikayı Veri Şifreleme veya Anahtar Şifreleme Anahtarı kullanımı ve Belge Şifrelemesi Gelişmiş Anahtar kullanımı (1.3.6.1.4.1.311.80.1) ile yeniden oluşturun. Daha fazla bilgi için bkz . Protect-CmsMessage.
WMF 5.0 RTM yüklendikten sonra DSC cmdlet'leri başarısız olabilir
Start-DscConfiguration
ve diğer DSC cmdlet'leri WMF 5.0 RTM yüklendikten sonra aşağıdaki hatayla başarısız olabilir:
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
Çözünürlük: Yükseltilmiş bir PowerShell oturumunda (Yönetici Olarak Çalıştır) aşağıdaki komutu çalıştırarak DSCEngineCache.mof dosyasını silin:
Remove-Item -Path $env:SystemRoot\system32\Configuration\DSCEngineCache.mof
WMF 5.0 Production Preview üzerine WMF 5.0 RTM yüklüyse DSC cmdlet'leri çalışmayabilir
Çözünürlük: Yükseltilmiş bir PowerShell oturumunda aşağıdaki komutu çalıştırın (yönetici olarak çalıştırın):
mofcomp $env:windir\system32\wbem\DscCoreConfProv.mof
DEBUGMode'da Get-DscConfiguration kullanırken LCM kararsız bir duruma geçebilir
LCM DebugMode'daysa, işlenmesini Get-DscConfiguration
durdurmak için CTRL+C tuşlarına basmak, LCM'nin kararsız bir duruma gitmesine neden olabilir, böylece DSC cmdlet'lerinin çoğunluğu çalışmaz.
Çözünürlük: Cmdlet'i hata ayıklarken CTRL+C tuşlarına Get-DscConfiguration
basmayın.
Stop-DscConfiguration DebugMode'da yanıt vermeyebilir
LCM DebugMode içindeyse, Stop-DscConfiguration
tarafından başlatılan bir işlemi durdurmaya çalışırken yanıt vermeyebilir Get-DscConfiguration
Çözünürlük: Tarafından başlatılan Get-DscConfiguration
işlemin hata ayıklamasını DSC kaynaklarında hata ayıklama bölümünde açıklandığı gibi tamamlayın.
DebugMode'da Ayrıntılı Hata İletisi gösterilmiyor
LCM DebugMode içindeyse, DSC Kaynaklarından ayrıntılı hata iletisi görüntülenmez.
Çözünürlük: Kaynaktan ayrıntılı iletileri görmek için DebugMode özelliğini devre dışı bırakma
Invoke-DscResource işlemleri Get-DscConfigurationStatus cmdlet'i tarafından alınamıyor
Herhangi bir kaynağın yöntemlerini doğrudan çağırmak için cmdlet'ini kullandıktan Invoke-DscResource
sonra, bu işlemin kayıtları aracılığıyla Get-DscConfigurationStatus
alınamaz.
Çözünürlük: Hiçbiri.
Get-DscConfigurationStatus, çekme döngüsü işlemlerini Tutarlılık türü olarak döndürür
Bir düğüm PULL yenileme moduna ayarlandığında, gerçekleştirilen her çekme işlemi için cmdlet işlem Get-DscConfigurationStatus
türünü başlangıç yerine Tutarlılık olarak bildirir
Çözünürlük: Hiçbiri.
Invoke-DscResource cmdlet'i iletinin üretilme sırasına göre döndürülmüyor
Invoke-DscResource
Cmdlet, LCM veya DSC kaynağı tarafından üretildikleri sırada ayrıntılı, uyarı ve hata iletileri döndürmez.
Çözünürlük: Hiçbiri.
DSC Kaynakları Invoke-DscResource ile kullanıldığında kolayca hata ayıklanamaz
LCM hata ayıklama modunda çalışırken, Invoke-DscResource
cmdlet hata ayıklama için bağlanılacak runspace hakkında bilgi vermez. Daha fazla bilgi için bkz. DSC kaynaklarda hata ayıklama.
Çözünürlük: DSC kaynağında hata ayıklamak için , Enter-PSHostProcess
Get-Runspace
ve cmdlet'lerini Get-PSHostProcessInfo
kullanarak runspace'i bulun ve Debug-Runspace
ekleyin.
# 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
Aynı düğüm için çeşitli Kısmi Yapılandırma belgeleri aynı kaynak adlarına sahip olamaz
Tek bir düğüme dağıtılan birkaç kısmi yapılandırma için kaynakların aynı adları çalışma zamanı hatasına neden olur.
Çözünürlük: Farklı kısmi yapılandırmalarda aynı kaynaklar için bile farklı adlar kullanın.
Start-DscConfiguration –UseExisting -Credential ile çalışmıyor
UseExisting parametresiyle kullanıldığında Start-DscConfiguration
Credential parametresi yoksayılır. DSC, işleme devam etmek için varsayılan işlem kimliğini kullanır. Bu, uzak düğümde devam etmek için farklı bir kimlik bilgisi gerektiğinde hataya neden olur.
Çözünürlük: Uzak DSC işlemleri için CIM oturumunu kullanın:
$session = New-CimSession -ComputerName $node -Credential $credential
Start-DscConfiguration -UseExisting -CimSession $session
DSC yapılandırmalarında Düğüm Adları Olarak IPv6 Adresleri
DSC yapılandırma betiklerinde düğüm adları olarak IPv6 adresleri bu sürümde desteklenmez.
Çözünürlük: Hiçbiri.
DSC Kaynaklarda Class-Based
Hata Ayıklama
Bu sürümde sınıf tabanlı DSC Kaynaklarında hata ayıklama desteklenmez.
Çözünürlük: Hiçbiri.
DSC Class-Based Kaynağındaki $script kapsamında tanımlanan değişkenler ve işlevler, bir DSC Kaynağına yapılan birden çok çağrıda korunmaz
Yapılandırma kapsam içinde $script
tanımlanmış değişkenleri veya işlevleri olan sınıf tabanlı bir kaynak kullanıyorsa birden çok ardışık çağrı Start-DSCConfiguration
başarısız olur.
Çözünürlük: DSC Kaynak sınıfının kendisinde tüm değişkenleri ve işlevleri tanımlayın. Kapsam değişkeni/işlevi yok $script
.
Bir kaynak PSDscRunAsCredential kullanırken DSC Kaynak Hata Ayıklama
Bir kaynak yapılandırmada PSDscRunAsCredential özelliğini kullanırken DSC Kaynak hata ayıklaması bu sürümde desteklenmez.
Çözünürlük: Hiçbiri.
DSC Bileşik Kaynakları için PsDscRunAsCredential desteklenmiyor
Çözünürlük: Varsa Credential özelliğini kullanın. Örnek ServiceSet ve WindowsFeatureSet
Get-DscResource -Sözdizimi PsDscRunAsCredential'ı doğru yansıtmıyor
Söz dizimi parametresi, kaynak bunu zorunlu olarak işaretlediğinde veya desteklemediğinde PsDscRunAsCredential'ı doğru yansıtmaz.
Çözünürlük: Hiçbiri. Ancak ISE'de yazma yapılandırması, IntelliSense kullanırken PsDscRunAsCredential özelliği hakkında doğru meta verileri yansıtır.
WindowsOptionalFeature, Windows 7'de kullanılamaz
WindowsOptionalFeature DSC kaynağı Windows 7'de kullanılamaz. Bu kaynak, DISM modülünü ve Windows işletim sisteminin Windows 8 ve daha yeni sürümlerinden başlayarak kullanılabilen DISM cmdlet'lerini gerektirir.
Sınıf tabanlı DSC kaynakları için Import-DscResource -ModuleVersion beklendiği gibi çalışmayabilir
Derleme düğümünde sınıf tabanlı DSC kaynak modülünün birden çok sürümü varsa, Import-DscResource -ModuleVersion
belirtilen sürümü seçmez ve aşağıdaki derleme hatasıyla sonuçlanır.
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
Çözünürlük:ModuleSpecification nesnesini Aşağıda belirtilen RequiredVersion anahtarıyla ModuleName parametresine tanımlayarak gerekli sürümü içeri aktarın:
Import-DscResource -ModuleName @{ModuleName='MyModuleName';RequiredVersion='1.2'}
Kayıt defteri kaynağı gibi bazı DSC kaynaklarının isteği işlemesi uzun sürebilir.
1. Çözüm: Aşağıdaki klasörü düzenli aralıklarla temizleyen bir zamanlama görevi İçerik Oluşturucu.
$env:windir\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\CommandAnalysis
Çözünürlük 2: Yapılandırmanın sonundaki CommandAnalysis klasörünü temizlemek için DSC yapılandırmasını değiştirin.
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'
}
}