Command line TFS命令行:如何取消映射整个工作区?

Command line TFS命令行:如何取消映射整个工作区?,command-line,tfs,mapping,workspace,Command Line,Tfs,Mapping,Workspace,这是我的问题。我有一个构建脚本,它动态地将映射添加到某个工作区,然后在完成时取消映射。我担心,如果我的脚本在取消映射之前失败,映射会一直保留到下一次,并把事情搞砸 因此,我想在脚本开始时取消映射整个工作区,并重新创建它,但问题是我不知道具体可能存在什么。通过TFS命令行,我可以很容易地取消映射,但是您必须确切地知道映射是什么。我的问题是,最简单、最好的方法是什么 谢谢你的帮助 我的解决方案是保存此 $workspace_info = [String[]] (&$tfs_cli workf

这是我的问题。我有一个构建脚本,它动态地将映射添加到某个工作区,然后在完成时取消映射。我担心,如果我的脚本在取消映射之前失败,映射会一直保留到下一次,并把事情搞砸

因此,我想在脚本开始时取消映射整个工作区,并重新创建它,但问题是我不知道具体可能存在什么。通过TFS命令行,我可以很容易地取消映射,但是您必须确切地知道映射是什么。我的问题是,最简单、最好的方法是什么


谢谢你的帮助

我的解决方案是保存此

$workspace_info = [String[]] (&$tfs_cli workfold /workspace:$workspace_name)
…转换为字符串数组,然后在其上迭代,查找表示映射的$/并取消映射

foreach($wi in $workspace_info) 
{ 
    if($wi.Contains("$/")) 
    { 
        $mapping = $wi
        #minor string manipulation code left out for brevity

        &$tfs_cli /unmap $mapping /workspace:$workspace_name
    }
}

如果您确定工作区中不会有任何需要保留的挂起更改,那么完全删除它并创建一个新的工作区可能会更容易

或者,如果您确实想坚持使用您的算法,电动工具会使其变得更容易:

$ws = get-tfsworkspace .
$ws.Folders | % { $ws.DeleteMapping($_) }