3

개발에 사용 된 세 가지 구성 파일에 걸쳐 연결 문자열을 업데이트하는 다음 스크립트가 있습니다.PowerShell 업데이트 연결 문자열

function Main() 
{ 
pushd 
cd .. 
$aomsDir = pwd 
$configFiles = @('util\GeneratePocos.exe.config', 'src\Web.UI\web.config', 'src\Data\App.Config') 

$MyAOMSEntitiesConnStr = $env:AOMS_CONN_STR 

Write-Host 'Beginning update of Connection strings...' 

foreach($file in $configFiles) 
{ 
    $config = New-Object XML 
    $config.Load("$aomsDir\$file") 

    foreach($conStr in $config.configuration.connectionStrings.add) 
    { 
     if($conStr.name -ieq 'AOMSEntities') 
     { 
      $conStr.connectionString = $MyAOMSEntitiesConnStr 
     } 
    } 

    $config.Save("$aomsDir\$file") 
} 

Write-Host 'Completed updating connection strings for your machine.' 

popd 

}

홈페이지

문제는 연결 문자열 &quote;을 포함 할 필요가 있지만 설정 파일이이 & 인용되고 저장 될 때; 결과적으로 연결 문자열은 더 이상 유효하지 않습니다.

이 작업을 수행하는 방법을 알고있는 사람이 있습니까? 파일을 대체하는 텍스트를 작성하려고 생각했지만 어쩌면 깨끗한 방법이있을 수 있습니다.

도움 주셔서 감사합니다.

(Get-Content "$aomsDir\$file") | % {$_ -replace '"', '"'} | Set-Content -path "$aomsDir\$file" 

그것은 "이 설정 파일에 기록하고 데이터베이스에 연결하는 응용 프로그램을 할 수 있는지 확인합니다 :

답변

3

이 라인은 내 문제를 해결합니다.

+0

답장을 보내 주셔서 감사합니다. 자신의 질문에 답변 해 주셔서 감사합니다. –

1

큰 따옴표로 분리 된 특성 값에 포함 된 큰 따옴표에 대해 예상됩니다. 예를 들어 작은 따옴표를 대신 사용할 수 있습니다. '이자형; (또는 그 'e :)? 난 당신이 System.Configuration 어셈블리를 사용하여 연결 문자열에 액세스해야한다고 생각

[xml]$config = Get-Content "$aomsDir\$file" 
+0

Thanks Keith 제안한대로 설정 파일을 간단하게로드 할 것입니다. 단일 인용 부호 사용을 시도했지만 구성이 올바르지 않아 작동하지 않았습니다. linq 엔티티 프레임 워크와 함께 작동하므로 연결 문자열에 "이 필요합니다. –

0

:

또한, 당신은 당신이 XML을로드하는 방식을 단순화 할 수 있습니다. PowerShell을 사용하여 프로젝트를 빌드 할 때 연결 문자열을 암호화하는 방법에 대한 게시물을 작성했습니다 : Encrypt App.config section using PowerShell as a Post-build event. 목표가 암호화되지 않기 때문에 적응해야하지만 도움이 될 것입니다.

+0

감사합니다 필립 나는 이것을 시도하고 내가 어떻게 일어나는지 알려줄거야. –