簡體   English   中英

Powershell和TFS:tf.exe與Power工具TFS cmdlet?

[英]Powershell and TFS: tf.exe versus Power tools TFS cmdlets?

我正在創建一個腳本來在我的TFS實例中執行大量移動。 我有2010 TFS Power Tools提供的tfs cmdlet,但它們的get-help文檔非常稀疏。 具體來說,Add-TfsPendingChange似乎不支持重命名,這迫使我改為使用“tf.exe rename”。

首先:我有沒有錯過cmdlet的文檔? 我已嘗試使用命令的get-help,但它們不支持-detailed或-examples標志。 有什么更多可用嗎?

其次:我有什么理由比普通的tf.exe更喜歡任何cmdlet? 除了在執行類似功能時通過管道傳遞對象之外,還有其他好處嗎?

TF cmdlet在這一點上是一個簡約的產品,包括提供的文檔。 一般情況下,我會使用TF cmdlet,它們支持我正在嘗試做的事情 - 特別是如果您有任何疑問。 處理查詢cmdlet的輸出要容易得多,因為它們為您提供了豐富的對象,而不是在使用tf status . /r等時必須解析的文本流tf status . /r tf status . /r

另請注意,在x64 Windows系統上,TF cmdlet僅適用於32位PowerShell主機。

tf cmdlet並非完全沒用,但是......我們現在決定不在我們的構建環境中嘗試使用它們,即使它意味着文本解析。

除了x64之外,還有很多缺少的命令 (感謝@Keith)和缺少的參數, 最重要的是 ,它們在遠程會話中不起作用!

第三種選擇是在PowerShell中使用TFS公共程序集。 執行此操作時,您可以訪問所有TFS客戶端功能,並且仍然使用TFS cmdlet。 是否選擇此方法優於tf.exe和其他TFS命令行可執行文件取決於您喜歡的腳本環境。

這是一個引用TFS 2013公共程序集的PowerShell命令(對於TFS 2012或2010,只需將Version=12.0.0.0更改為Version=11.0.0.0Version=10.0.0.0 )。

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }

對於重命名示例,您可以:

  1. 使用Get-TfsWorkspace cmdlet實例化Microsoft.TeamFoundation.VersionControl.Client.Workspace對象。
  2. 調用Workspace對象的PendRenameGetPendingChangesCheckin方法。

像這樣的東西:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM