【问题标题】:How to programmatically check if a TFS 2013's backup is running?如何以编程方式检查 TFS 2013 的备份是否正在运行?
【发布时间】:2014-09-04 05:42:08
【问题描述】:

出于维护目的,我曾经为 TFS 2010 实现“正常重启”脚本。需要这样的重启才能让服务器有机会安装补丁。但我们可能不会在“构建”或“备份”当前正在运行时重新启动服务器。

因此,我编写了一个脚本来禁用所有 TFS 服务(源代码控制、构建、备份计划)并等待当前正在运行的所有构建和备份任务完成,然后重新启动 TFS 服务器。

为了等待“备份任务”完成,我以编程方式监视由 TFS Power Tools 2010 创建的 Windows 计划任务:TfsDeleteOldBackup TfsDifferentialBackup TfsFullBackup TfsTransactionalBackup。

由于我们已迁移到 TFS 2013,因此“备份计划向导”不再创建此类 Windows 计划任务...所以,我想知道现在如何使用 TFS 2013 检查是否没有备份任务当前正在运行并以编程方式禁用它们?!

有什么想法吗?我没有看到这些任务是在哪里定义和执行的......

【问题讨论】:

    标签: tfs


    【解决方案1】:

    自 TFS 2012 以来,备份作业已重新实施为 TFS 代理作业。 您可以通过 tfs 客户端对象模型访问您想要的信息:

    var tfsConfigServerUri = new Uri(String.Format("http://localhost:8080/tfs"));
    var tfsConfigServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsConfigServerUri);
    var jobService = tfsConfigServer.GetService<ITeamFoundationJobService>();
    foreach(var job in jobService.QueryJobs())
    {
        ...
    }
    

    【讨论】:

    • 我现在只是试一试......不幸的是,没有明显的方法/查询可以知道作业实例当前是否正在运行。 QueryJobs() 返回有关作业定义的信息。与当前正在运行的作业实例无关。此外,QueryJobsHistory() 仅返回已完成作业的信息。但是 tt 应该有可能,因为我看到了一种可以停止“正在进行中”的作业的方法 StopJob(根据 MSDN)。因此,至少有一些内部机制可以获取作业实例。我将尝试查看与“Job Agents”相关的方法
    • 我发现“给定的作业具有以下五种状态之一:进行中(正在运行、已暂停、正在停止……)、已排队、已安排待将来执行、主机被阻止或未安排”[Chris Sidi 的博客]。但是,此类信息仅在使用 Microsoft.TeamFoundation.Framework.Server.TeamFoundationJobService 而不是 Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService 时可用。
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多