TFS版本管理部署到单独的域

时间:2018-03-30 16:41:26

标签: powershell tfs tfs2017

我们在内部网络上托管的TFS 2017内部设置。让我们称之为tfs.OurInternalDomain.com TFS应用程序及其构建控制器和代理程序都托管在我们的内部n / w上。 出于安全原因,我们的生产服务器托管在单独的域(数据中​​心)上。

我正在尝试使用TFS版本管理定义将TFS Build工件[文件和文件夹]从我们的内部n / w部署到我们的生产服务器上。 我能够使用“复制文件从”任务将文件复制到我们的生产服务器(位于单独的域)上的文件夹中,使用带有$(AdminLogin)和$(密码)的单独ID。此userID是生产服务器上的本地管理员。 TFS服务在我们域名的单独ID下运行。

这些是任务的变量:“从

复制文件”
Source=$(System.DefaultWorkingDirectory)/$(BuildDefinitionName)/$(BuildArtifactName)
Machines=$(ServerOneOnSeparateDomain)
Admin Login=$(AdminLogin) 
Password=$(Password)
Destination Folder=$(BuildDropLocation)

到目前为止一切顺利。 下一个任务是在目标计算机上运行powershell脚本,这是我们内部n / w上的构建代理无法执行powershell脚本的地方。我使用了-http和https协议。以下是选择http时的错误日志。

Executing the powershell script: D:\TFS2017Build\Agent1\tasks\PowerShellOnTargetMachines\1.0.41\PowerShellOnTargetMachines.ps1
Deployment started for machine: '<ServerOneOnSeparateDomain>.com:5985'
##[debug]Deployment logs for Deployment operation on <ServerOneOnSeparateDomain>:5985 
##[debug]Permission denied while trying to connect to the target machine <ServerOneOnSeparateDomain> on the port:5985 via power shell remoting. Please check the following link for instructions: https://go.microsoft.com/fwlink/?LinkID=390236System.Management.Automation.Remoting.PSRemotingTransportException: Connecting to remote server <ServerOneOnSeparateDomain> failed with the following error message : WinRM cannot process the request. The following error with errorcode 0x80090311 occurred while using Kerberos authentication: There are currently no logon servers available to service the logon request.  

Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.

在生产服务器上执行winrm时输出如下:

winrm quickconfig
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.

有没有办法解决这个问题,以至于我们不会干扰现有的TFS应用程序,即在内部域上托管TFS应用程序,构建控制器和代理,并且能够在单独的域上执行powershell脚本?如果没有,还有其他方法可以解决这个问题吗?

我的最终目标是能够通过托管在我们内部n / w上的TFS将代码部署到生产中。

如果需要,我可以提供更多详细信息。

1 个答案:

答案 0 :(得分:0)

根据这部分错误信息:

##[debug]Permission denied while trying to connect to the target machine <ServerOneOnSeparateDomain> on the port:5985 via power shell remoting. Please check the following link for instructions: https://go.microsoft.com/fwlink/?LinkID=390236System.Management.Automation.Remoting.PSRemotingTransportException: Connecting to remote server <ServerOneOnSeparateDomain> failed with the following error message : WinRM cannot process the request. The following error with errorcode 0x80090311 occurred while using Kerberos authentication: There are currently no logon servers available to service the logon request. 

权限被拒绝此处使用的帐户必须具有通过电源shell远程连接的权限。

要在远程计算机上建立PSSession或运行命令,用户必须有权使用远程计算机上的会话配置。

默认情况下,只有计算机上Administrators组的成员才有权使用默认会话配置。因此,只有Administrators组的成员才能远程连接到计算机。

要允许其他用户连接到本地计算机,请为用户提供对本地计算机上默认会话配置的执行权限。

以下命令将打开一个属性表,该表允许您更改本地计算机上默认Microsoft.PowerShell会话配置的安全描述符。

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

如果失败,请尝试将源添加到远程计算机的TrustedHosts 。你可以在这里阅读http://technet.microsoft.com/en-us/library/hh847850.aspx

如果您想使用https,则需要配置WinRM才能收听5986.

更多详细信息请参阅下面类似的问题和教程: