以编程方式[永久]删除 TFS 工作项

发布于 2024-12-08 10:14:21 字数 242 浏览 0 评论 0原文

虽然我知道有一个命令行工具可以永久删除 TFS 工作项。 (例如如何从 Team Foundation 中删除工作项服务器

是否有人能够使用 TFS 2010 API DLL 以编程方式实现相同的操作?

Whilst I'm aware that there is a command line tool to permenantly delete a TFS work item. (e.g. How to delete Work Item from Team Foundation Server)

Has anyone been able to achieve the same action programatically using the TFS 2010 API DLLs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谈下烟灰 2024-12-15 10:14:21

Shai Raiten 已就此发表博客 此处,他在此处使用 DestroyWorkItems(ids)

建议您在实施时格外小心,因为这可能会严重扰乱您的安装。有人可能会说构建这样一个工具偏离了最佳实践。

Shai Raiten has blogged about this here, where he makes use of DestroyWorkItems(ids).

It is advisable that you proceed with extra caution in your implementation, since this can severely mess your installation. One could argue that constructing such a tool deviates from best practices.

娇纵 2024-12-15 10:14:21

您还可以 使用PowerShell批量删除工作项

将以下脚本复制并粘贴到 PowerShell 文件中(带有 .ps1
扩展名),更新下面列表#4中提到的变量值
并从安装了witadmin工具的机器上运行命令
(一般在安装 Visual Studio 后即可使用)。打开
PowerShell 命令窗口并执行脚本。
注意:运行以下脚本的帐户应具有团队基础管理员或集合管理员访问权限。

########TFS 工作项批量销毁自动化脚本##########
#笔记:
#1) 该脚本需要设置文件/文件夹路径,在运行脚本之前验证文件/文件夹路径
#2) 以管理员身份启动 powershell 窗口并运行脚本
#3) 该脚本需要目标服务器上的共享和管理员访问权限,请确保您的帐户或脚本所在的帐户
# 执行者是目标服务器上管理组的成员
#4)更新以下内容:
# 4.1: $CollectionURL
# 4.2: $WitAdmin 工具位置
        # 对于 VS 2015,默认位置为 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
        # 对于 VS 2013,默认位置为 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
# 4.3: $WI_列表
# 4.4: $日志文件
####################

$CollectionURL = "http://tfs:8080/tfs/CollectionName"
$WitAdminLocation =“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE”
$WI_List = 获取内容“C:\WI_List.txt”
$logfile="C:\log.txt"
$ExecutionStartTime = 获取日期
$WICount = 0
"## 开始 WI 销毁 @ $ExecutionStartTime ##"|输出文件 $logfile -Append
“集合 URL:$CollectionURL”|输出文件 $logfile -Append
foreach($WI_List 中的 $WIID)
    {
        CD $WitAdminLocation
        .\witadmin destroywi /collection:$CollectionURL /id:$WIID /noprompt
        “WI ID:$WIID 已毁” |输出文件 $logfile -Append
        $WICount = $WICount + 1
        写入主机“$WICount 工作项已删除”
    }

$ExecutionEndTime = 获取日期
“## WI 销毁命令已完成 @ $ExecutionEndTime ##”|输出文件 $logfile -Append

$TotalExecutionTime = $ExecutionEndTime - $ExecutionStartTime

“删除的工作项目总数:$WICount”|输出文件 $logfile -Append

“总执行时间:$TotalExecutionTime”|输出文件 $logfile -Append

##脚本结束##

You can also use PowerShell to bulk delete work items:

Copy and paste below script in a PowerShell file (with .ps1
extension), update the variable values mentioned in the list #4 below
and run the command from a machine where witadmin tool is installed
(Generally available after visual studio installation). Open
PowerShell command window and execute the script.
Note: Account running below script should have team foundation administrator or collection administrator access.

########TFS Work Items Bulk Destroy Automation Script##########
#Notes:
#1) This script requires to setup file/folder path, validate the file/folders path before running the script
#2) start the powershell window as Administrator and run the script
#3) This script requires share and admin access on the destination server, make sure your account or the account under which script is
#    executing is member of admin group on the destination server
#4) Update following:
#   4.1: $CollectionURL
#   4.2: $WitAdmin tool location
        # For VS 2015, Default location is C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
        # For VS 2013, Default location is C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
#   4.3: $WI_List
#   4.4: $logfile
####################

$CollectionURL = "http://tfs:8080/tfs/CollectionName"
$WitAdminLocation = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"
$WI_List =  Get-Content "C:\WI_List.txt"
$logfile="C:\log.txt"
$ExecutionStartTime = Get-Date
$WICount = 0
"## Starting WI Destroy @ $ExecutionStartTime ##"| Out-File $logfile -Append
"Collection URL: $CollectionURL" | Out-File $logfile -Append
foreach ($WIID in $WI_List)
    {
        CD $WitAdminLocation
        .\witadmin destroywi /collection:$CollectionURL /id:$WIID /noprompt
        "WI ID: $WIID Destroyed" | Out-File $logfile -Append
        $WICount = $WICount + 1
        Write-Host "$WICount Work Items Deleted"
    }

$ExecutionEndTime = Get-Date
"## WI Destroy Command Completed @ $ExecutionEndTime ##"| Out-File $logfile -Append

$TotalExecutionTime = $ExecutionEndTime - $ExecutionStartTime

"Total Work Items Deleted: $WICount"   | Out-File $logfile -Append

" Total Execution Time: $TotalExecutionTime"  | Out-File $logfile -Append

##End of script##
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文