2014/01/03

PowerShell からVisual Studio OnlineのTeam Projectを削除する方法とサンプル

Visual Studio Online(旧サービス名:Team Foundation Service)にいくつかのTeam Projectを作成しています。
現在も試行錯誤で使っていますが、以前作成したTeam Projectプロジェクトの残骸が残っていました。
非常に気持ちが悪かったため、Team Projectの削除方法を調べた結果をメモ。
また、PowerShellから削除するサンプルを作ってみました。

Visual Studio OnlineのTeam Projectを削除する方法

  1. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDEへ移動
  2. 下記実行ファイルを引数付きで実行
    .\TFSDeleteProject.exe /force /q /collection:http://xxxx.visualstudio.com/DefaultCollection “ProjectName”
2の引数は全部で4個あります。
/force 強制削除
/q 確認用のメッセージを非表示
/excludewss 削除対象からプロジェクトの SharePoint サイトを除外
/collection: チーム プロジェクト コレクションのURL
なお、Team Projectを削除する前に気を付ける事がいくつかあります。
  1. 削除権限は、Team Foundation Server管理者グループのメンバー、または、プロジェクト管理者グループのメンバー
  2. 削除後、Team Projectを復元できない

PowerShell サンプル

Team Projectを削除するツールをPowerShellで作ってみました。
<#
-------------------------------------------------------------------
【  PS名  】 Visual Studio Online プロジェクト削除ツール
-------------------------------------------------------------------
#>
[string]$tfsDelExecFolderX64 = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"
[string]$tfsDelExecFolderX86 = "C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE"
[string]$tfsDelExec = ""
[string]$tfsDelExecName = "TFSDeleteProject.exe"
[string]$siteUrl = https://xxxx.visualstudio.com/
[string]$siteCollectionName = "DefaultCollection"
[string]$delProjectName = ""
[string]$osArchitecture = (get-wmiobject win32_operatingsystem -computer localhost).OSArchitecture
$tfsDelExec = $tfsDelExecFolderX86
if($osArchitecture.indexOf("64") -eq 0){ $tfsDelExec = $tfsDelExecFolderX64 }
$tfsDelExec += "\$tfsDelExecName"
$delProjectName = Read-Host @"
※注意※
1.プロジェクトを削除すると復元は行えません。
2.SharePoint サイトも同時に削除します。
予めご了承のうえ、実行してください。
---------------------------------
削除するプロジェクト名:
"@
#MessageBox.Showの第三引数は[OK Cancel]の1です。
$output = [System.Windows.Forms.MessageBox]::Show("プロジェクト名「$delProjectName」を本当に削除しますか?", "削除確認", 1) 
if($output -eq "Cancel"){
    Write-Host "処理を中止しました。"
    exit
}
#Project と SharePoint サイトを同時に削除
& $tfsDelExec "/force" "/q" "/collection:$siteUrl/$siteCollectionName" "`"${delProjectName}`""
#Project のみ削除
#& $tfsDelExec "/force" "/q" "/excludewss" "/collection:$siteUrl/$siteCollectionName" "`"${delProjectName}`""
スポンサーリンク

スポンサーリンク