目标机器上的TFS' Powershell'不同AD域中的计算机的任务

时间:2017-01-03 10:13:28

标签: powershell tfs powershell-remoting ms-release-management

我们希望为部署使用TFS版本管理。我们有几个环境(dev,qa,staging,prod)。他们每个人都在独立的AD森林中。构建机器也驻留在单独的林中。他们之间没有信任。

我设置目标计算机以接受用于PS远程处理的CredSSP身份验证。我能够从构建机器进入目标机器上的PS会话。但是TFS任务和目标机器上的Powershell没有运气,

这里我的任务在TFS中看起来如何: TFS PS on Target Machines task

在日志中: 2016-12-30T15:04:11.0279893Z System.Management.Automation.Remoting.PSRemotingTransportException:连接到远程服务器app.dev.local失败,并显示以下错误消息:WinRM无法处理请求。使用协商身份验证时出现以下错误,错误代码为0x80090322:发生未知安全错误。

有没有办法让TFS在驻留在构建机器AD域之外的目标机器上运行PS?

AD信托看起来不像一个选项。如果没有适当的PS远程处理,它看起来不像发布管理可以为我们提供很多价值。

1 个答案:

答案 0 :(得分:2)

TL; DR;

不,你有两个选择。

  1. 在您的主域和所有子域之间设置单向信任,以便您的生产域凭据可用于所有子域。
  2. 使用影子帐户以允许跨域身份验证。这些是允许身份验证的机器上具有相同用户名和密码的本地帐户。这是非信任域auth的官方MSFT工作。
  3. 答案很长

    除此之外,由于您完全不受支持的快乐路径的限制,因此您需要实现自己的自定义任务,以促进您想要的跨域身份验证。在PowerShell中实现自己的任务应该是一项相当简单的任务。

    https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/add-build-task

    现实情况是,只需要几个有限的场景,你需要一个"测试AD"环境,拥有Dev,QA或Staging的域是绝对正确的。 AD不是那样设计的,我从来没有看到它为组织或开发工作的利益而工作。它是过度偏执的系统管理员的产物,它是一个失败的原因。

    拥有永久性附加域的唯一原因是您的系统管理员可以测试其域名更改和配置。

    对于主动更改AD或需要特定设置进行测试的软件开发项目,您可以动态创建测试域以及所需的测试机器。这就是您如何针对域创建有效且可重复的测试。