После долгого поиска (часы и часы в очень плохой документации msdn о команде tf.exe
!), Я нашел способ получить информацию!
Сначала вы должны использовать команду tf.exe workfold c:\your\path
, чтобы узнать, в какой рабочей области находится папка. Вывод команды что-то вроде этого:
================================================================
Workspace : NameOfYourWorkspace (John Doe)
Collection: https://tfs.yourtfs.com/tfs/defaultcollection
$/: C:\your\path
Затем вы должны извлечь «рабочее пространство» (примечание: на самом деле мы не знаем, почему здесь команда tf.exe
не выводим рабочую область в формат, понимаемый везде tf.exe
команда т.е. «WorkspaceName; Владелец» и, следовательно, должны быть адаптированы) и данные «коллекции», чтобы использовать его в команде tf.exe workspaces /format:detailed
, как это:
tf.exe" workspaces /format:detailed /collection:"https://tfs.yourtfs.com/tfs/defaultcollection" "NameOfYourWorkspace;John Doe"
Вывод команды что-то вроде этого:
===============================================
Workspace : NameOfYourWorkspace
Owner : John Doe
Computer : YOU_COMPUTER
Comment :
Collection : yourtfs.com\DefaultCollection
Permissions: Private
Location : Local
File Time : Current
Working folders:
$/: C:\your\path
!
важные данные, которые я хочу здесь Location : Local
(или Server
)
Я написал немного Powershell скрипт, если он может быть мало пользы для кого-то, чтобы извлечь данные на выходе, чтобы использовать их:
function ExtractData($text, $key)
{
$pattern = "^$key *: *(.+)$"
$filteredText= $text | Select-String $key
$found = $filteredText -match $pattern
if ($found) {
return $matches[1]
}
exit 1
}
$currentWorkspaceData = (& "$env:VS120COMNTOOLS..\IDE\tf.exe" workfold .)
$workspace = ExtractData $currentWorkspaceData "Workspace"
$found = $workspace -match "^(.+) \((.+)\)$"
if (!$found) {
exit 1
}
$workspace = $matches[1] + ";" + $matches[2]
$collection = ExtractData $currentWorkspaceData "Collection"
$location=(ExtractData (& "$env:VS120COMNTOOLS..\IDE\tf.exe" workspaces /format:detailed /collection:$collection $workspace) "Location")
$localServer = $location -eq "Local"
if($localServer)
{
Write-Host "Local!!!"
}
else
{
Write-Host "Server!!!"
}
Этот скрипт дает ответ только для текущей папки, но может быть легко адаптирован ...