kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

複数のソリューションをアップグレード/結果確認するPowerShellスクリプト

以前id:kkamegawa:20100620:p1なんて書いたのですが、複数のソリューションをアップグレードしたあと、結果確認するの面倒ですよね。結果ファイルはupgradelog.xmlというファイルにできているので、こんな感じでやれます。

$xmls = gci "ソリューションを格納している最上位フォルダ" -filter upgradelog.xml -recurse
foreach($xml in $xmls) {
$xmldoc = [xml][string]::join("`n", (gc $xml.fullname -encoding UTF8))
$xmlEvents = $xmldoc.upgradelog.eevent | add-content -path result.txt
}

実行するとアップグレード対象になったソリューションの実行結果のxmlファイルから結果をtxtファイルにすることができます。csvファイルでもよかったんですが、テキストでいいかなってことで。
余談ですが、ソリューションのアップグレードを行うとき、ProcessクラスのStart()メソッドでVisual Studio(devenv.exe)を呼び出した後、WaitforExit()のあとに()を付けるの忘れてて、devenvが数十個起動してあせりました…。そんなポカしても、ちゃんと同時に複数のアップグレードウィザードが起動しないようで、かなり待てばちゃんとCPUとメモリに応じて調整してくれたようで、2CPUで4つのアップグレードウィザードを並列実行して、うまくいったようです。
アップグレードに関してはまた書きたいこともあるのですが、これはconnect行きかなー。
いや、IIS(非IIS Express)参照しているプロジェクトがソリューションに入っていると、通常権限ではアップグレードウィザードが「読み込み不可」の状態にしてくれるので、IIS使わないモードに変更してほしいなということなんですが。