0

免責事項: 私は ps について妥当な時間内にこれを達成するのに十分な知識がありません。そのため、そうです、他の誰かに私の汚い仕事を依頼しています。

コマンド ラインを開かずに web.config 変換を実行できるようにしたいと考えています。

フォルダーに次のファイルがあります。

web.config - actual web config
web.qa.config - web config transformation for qa env
web.production.config - web config transformation for production env
transform.ps1 - powershell script I want to use to run transformation

ここに私が欲しいものがあります:PSファイルは、使用して現在のディレクトリを列挙し、web.configを生成することに興味があるものを.*\.(?<env>.*?)\.config選択させます。<env>私の例では、「qa」と「production」の 2 つのオプションが表示されます。

私(ユーザー)が環境を選択した後(「qa」としましょう。選択した環境は $env として保存され、対応するファイル名は $transformation として保存されます)、スクリプトは次のことを行います。

  1. web.configオリジナルをバックアップweb.config.bak
  2. 次のコマンドを実行します。

.

echo applying $transformation...
[ctt][1].exe source:web.config transformation:$transformation destination:web.config preservewhitespaces verbose
echo done.

ctt .exe は、コマンド ラインから web.config 変換を実行する XDT ベースのツールです。

4

1 に答える 1

2

わかりました、十分に簡単に見えます。私はあなたのために汚い仕事をします。;)

以下を transform.ps1 として保存します。

    $environments = @()f
    gci | %{if ($_ -match '.*\.(?<env>.*?)\.config') {$environments += $matches.env}}
    Write-Host "`nEnvironments:"
    for ($i = 0; $i -lt $environments.Length; $i++) {Write-Host "[$($i + 1)] $($environments[$i])"}
    Write-Host
    do {
        $selection = [int](Read-Host "Please select an environment")
        if ($selection -gt 0 -and $selection -le $environments.Length) {
            $continue = $true
        } else {
            Write-Host "Invalid selection. Please enter the number of the environment you would like to select from the list."
        }
    } until ($continue)
    $transformation = "web.$($environments[$selection - 1]).config"
    if (Test-Path .\web.config) {
        cpi .\web.config .\web.config.bak
    } else {
        Write-Warning "web.config does not exist. No backup will be created."
    }
    if ($?) {
        Write-Host "`nApplying $transformation..."
        [ctt][1].exe source:web.config transformation:$transformation destination:web.config preservewhitespaces verbose
        Write-Host "Done.`n"
    } else {
        Write-Error "Failed to create a backup of web.config. Transformation aborted."
    }
于 2013-05-10T22:23:24.380 に答える