none
PowerShell에서 WebConfig파일의 AppSettings값을 변경 RRS feed

답변

  • 질문

     

    PowerShell에서 파일의 Encoding, Data를 설정할 수 있습니다.

     

    답변

     

    PowerShell Encoding, Data 변경 기능을 이용해서 Configuration File의 내용을 수정할 수 있습니다. Web.Config, App.Config, Manifest의 내용을 변경할 Script작성하는 경우가 있습니다. 이러한 경우 Content Series Cmdlet으로 Data를 제공, 그 데이터를 가공해서 처리할 수 있습니다.

     

    Step 1 : Data 설정

    아래의 Cmdlet은 파일을 생성 후 “This is a test” Data를 설정합니다.

    Set-Content c:\test.txt "This is a test"

     

    Step 2 : 문자열 바꾸기

    Text파일에 포함되어 있는 문자열을 변경할 수 있습니다.

    아래의Cmdlet txt파일의 데이터를 변수에 저장한 후 replace로 특정 문자만 지정된 문자로 변경을 합니다.

    $contentdata = Get-Content C:\TempData2.txt

    $contentdata | % { $_ -replace '3','4'} | Set-Content C:\TempData2.txt

     

    Step 3 : Encoding 변경

    현재 디렉토리의 확장자가 txt인 파일의 Encoding UTF8로 변경을 합니다.

    Dir *.txt | ForEach-Object { (Get-Content -Path $_.FullName) | Set-Content -Path $_.FullName -Encoding UTF8 }

     

    Step 4 : 활용

    아래의 함수는 Content Series를 사용해서 WebConfig AppSetting Element의 값을 변경을 합니다. 이미 설정되어 있는 Key값을 변경할 수 있습니다.

    간편하게 Script에 함수를 포함해서 배포한 후에도  사용자가 간편하게 WebApplication의 작동방식을 변경할 수 있습니다.

    function Set-AppSettings

    {  

        param(

            [Parameter(Mandatory=$true)]

            $configpath,

            [Parameter(Mandatory=$true)]

            $key,

            [Parameter(Mandatory=$true)]

            $value

        )

       

        trap [Exception]

        {

            Write-Host $_.Exception.Message       

            continue;

        }        

        $data = Get-Content $configpath   

        $xmlwebconfig  = [xml]$data   

        $xmlwebconfig.configuration.appsettings.add | % { if($_.Key -eq $key) { $_.Value = $value }}   

        $xmlwebconfig.Save($configpath)   

    }

     

    Filepath, Key, Value 순서대로 인자를 사용합니다.

    Set-AppSettings "C:\web.config" "Property1" "NewValue1"

    • 답변으로 표시됨 김도남 2011년 10월 26일 수요일 오전 4:02
    2011년 10월 25일 화요일 오전 5:16
    중재자