2016-04-25 25 views
5

Ho effettuato l'aggiornamento a PowerShell v5.0.10586.117 e ora non riesco ad accedere a AppSettings dal mio file app.config. Il codice funziona con PowerShell v4 (l'ho provato su altri computer su cui è installato v4 e restituisce i dati da AppSettings).PowerShell 5 AppSettings Bug?

ho impostato l'App Config in PowerShell

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

posso verificare che il dominio corrente ha le impostazioni di app con

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

rendimenti PATH\App.config ma quando corro

[System.Configuration.ConfigurationManager]::AppSettings.count 

PowerShell v5 rendimenti: 0

ma su PowerShell v4 (Windows 7, Windows Server 2008 R2 Enterprise, ecc) restituisce: 5

Perché il comportamento risultare diversa da PowerShell 5 vs 4 PowerShell? è un insetto? Qualche idea su come risolvere il problema delle impostazioni dell'app?

[Altre informazioni]

Ho provato a fare un work-around con

 $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) 

Con questo lavoro -Round utilizzando il $ retVal, posso ottenere i dati dalle AppSettings che ho aspettatevi, ma in seguito fallirà un file .dll che sto importando e che si aspetta che i dati di App Config esistano.

[Aggiornamento 1]: Ho eseguito l'aggiornamento a PowerShell 5 su Windows 8, Windows 8.1 e Server 2012 e ho riscontrato lo stesso problema. Aggiornato il titolo e la descrizione del problema per riflettere che si trova su tutte le istanze di PowerShell 5 che ho testato.

[Aggiornamento 2]:

Per @PetSerAl, ho scoperto che avrò lo stesso problema in PowerShell v4 se cerco di ottenere l'appSetting prima che ho impostato il file di configurazione

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

restituisce 0 in PowerShell v4.

Se muovo il file app config per C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config allora non avere un problema della restituzione dei dati, né ho un problema con le DLL esterne che sto caricamento che si aspettano informazioni in app config

+0

Se con PowerShell v4 si chiede prima '[System.Configuration.ConfigurationManager] :: AppSettings' prima di' [System.AppDomain] :: CurrentDomain.SetData ("APP_CONFIG_FILE", $ AppConfigPath) ', si otterrebbe lo stesso problema ? – PetSerAl

+0

'[System.Configuration.ConfigurationManager] :: AppSettings' (* dovrebbe *) restituisce la sezione AppSettings definita nel file di configurazione dell'app del dominio corrente. Se si fa clic su AppSettings senza definire il file di configurazione dell'app, viene automaticamente impostato su 'C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe.config' che non esiste sui sistemi che ho provato. Poiché non esiste, non restituirebbe nulla per la sezione AppSettings. Posso provare a creare il file, ma non sono sicuro di cosa stai provando a testare. – rogergarrison

+0

'[System.Configuration.ConfigurationManager] :: AppSettings; [System.AppDomain] :: CurrentDomain.SetData ("APP_CONFIG_FILE", $ AppConfigPath); [System.Configuration.ConfigurationManager] :: AppSettings'. Restituisce i dati dal tuo file di configurazione al secondo accesso a '[System.Configuration.ConfigurationManager] :: AppSettings'? – PetSerAl

risposta

1

Questo sembra essere un bug nelle versioni precedenti di PowerShell 5. Da allora ho aggiornato a PowerShell 5.1.14409.1005 e il problema è stato risolto.