2016-04-25 24 views
5

PowerShell v5.0.10586.117 sürümüne yükseltildim ve şimdi AppSettings'e app.config dosyasından erişemiyorum. Kod, PowerShell v4 ile çalışır (v4 yüklü diğer bilgisayarlarda denedim ve verileri AppSettings'den döndürür). PowerShell 5 AppSettings Hata mı?

Ben PowerShell

[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $AppConfigPath) 

ben Güncel Alan

[System.AppDomain]::CurrentDomain.GetData("APP_CONFIG_FILE") 

getiri PATH\App.config ama acelem

ile Uygulama Ayarları sahip olduğunu doğrulayabilir App Config'i set
[System.Configuration.ConfigurationManager]::AppSettings.count 

PowerShell v5 döner:

ancak PowerShell v4 üzerinde 0 (Windows 7, Windows Server 2008 R2 Enterprise, vb) döndürür:

5 Neden davranış PowerShell 4 vs PowerShell 5 farklı olurdu? Bu bir hata mı? Uygulama Ayarları sorununu nasıl çözebilirim?

[Daha Fazla Bilgi]

Ben bu işi $ retval kullanarak mevsimliği ile

 $configFile = System.Configuration.ConfigurationManager]::OpenExeConfiguration([System.Configuration.ConfigurationUserLevel]::None) 
     $settings = $configFile.AppSettings.Settings 
     $retVal = $settings[$keyName].Value 
     $configFile.Save([System.Configuration.ConfigurationSaveMode]::Modified) 
     [System.Configuration.ConfigurationManager]::RefreshSection($configFile.AppSettings.SectionInformation.Name) 

ile bir iş-etrafında yapıyor denedi, ben AppSettings'i dışarı veri alabilirsiniz ben bekleniyor, ancak daha sonra App Yapı verilerinin varolmasını beklediğim bir .dll dosyasında başarısız oluyor.

[Güncelleştirme 1]: Windows 8, Windows 8.1 ve Server 2012'de PowerShell 5'e yükselttim ve aynı sorunu aldım. Test ettiğim tüm PowerShell 5 örneklerinde olduğunu belirtmek için Başlık ve sorun açıklaması güncellendi.

[Güncelleme 2]:

Başına @PetSerAl, ben ayar dosyası önce appSetting'in elde etmeye çalışmak eğer PowerShell v4 de aynı sorunu sahip olacağını keşfettik

[System.Configuration.ConfigurationManager]::AppSettings 
[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $AppConfigPath) 
[System.Configuration.ConfigurationManager]::AppSettings.Count 

PowerShell v4'te 0 döndürür. Ben C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config benim app yapılandırma dosyasını taşırsanız

sonra veriyi dönen bir sorunu yok, ne de ben bu uygulama yapılandırma

+0

Eğer PowerShell v4 ile ilk olarak '[System.Configuration.ConfigurationManager] :: AppSettings' 'ı [System.AppDomain] :: CurrentDomain.SetData (" APP_CONFIG_FILE ", $ AppConfigPath)' dan önce sorarsanız, o zaman aynı sorun olur mu? ? – PetSerAl

+0

'[System.Configuration.ConfigurationManager] :: AppSettings' (* *) geçerli etki alanının uygulama yapılandırma dosyasında tanımlanan AppSettings bölümünü döndürür. Uygulama yapılandırma dosyasını tanımlamadan AppSettings'i çağırırsanız, varsayılan olarak 'C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe olarak ayarlanır.Ben test ettiğim sistemlerde mevcut olmayan config. Mevcut olmadığı için, AppSettings bölümü için hiçbir şey iade etmedi. Dosyayı oluşturmayı deneyebilirim, ancak test etmeye çalıştığınız şeyden emin değilim. – rogergarrison

+0

'[System.Configuration.ConfigurationManager] :: AppSettings; [System.AppDomain] :: CurrentDomain.SetData ("APP_CONFIG_FILE", $ AppConfigPath); [System.Configuration.ConfigurationManager] :: AppSettings'. Yapılandırma dosyanızdan veriyi '[System.Configuration.ConfigurationManager] :: AppSettings''e ikinci erişimde döndürüyor mu? – PetSerAl

cevap

1

bilgileri bekliyoruz yükleme ediyorum harici DLL dosyaları ile bir sorunu var mı Bu PowerShell 5'in önceki sürümlerinde bir hata gibi görünüyor. Bu yana PowerShell 5.1.14409.1005 sürümüne yükseltilmiş ve sorun çözülmüştür.