从 Team Foundation Build 调用的 Powershell 脚本远程执行

3
我将尝试使用SharePoint脚本部署SharePoint解决方案,步骤如下:
首先,在Windows PowerShell控制台中测试环境。
New-PSSession -ComputerName developmentserver01
Enter-PSSession -computername developmentserver01
d:
cd d:\deploymentscripts
.\deploysharepoint.ps1

然后我开始自动化:

1.- TFS运行一个构建,最后调用本地的"deploy.ps1" --->这个步骤已经完成。

2.- deploy1.ps1将拷贝的文件复制到开发环境developmentserver01的共享文件夹中。

3.- 文件复制后,deploy1.ps1通过powershell远程连接命令连接到开发环境机器developmentserver01 --->这个步骤已经完成。

4.- 这一步失败了,在这一步中,我尝试执行在第二步中复制到开发环境机器上的部署脚本deploySharepoint.ps1。首先使用脚本内部的命令,就像在powershell控制台中一样,但我发现这些命令在TFS构建机器而不是我用远程连接连接的机器上运行。

d:
cd d:\deploymentscripts
.\deploysharepoint.ps1

后来使用不同的选项(invoke-command,...)只有这个选项起作用:

Invoke-Command -computername developmentserver01 -scriptblock{d:\DeploymentScripts\deploysharepoint.ps1 -solutionNames @("parameter1")}

问题在于我认为invoke-command不能像使用powershell控制台的命令那样工作,因为脚本显示错误,即用户没有权限访问sharepoint Farm。

如果我在power shell控制台中使用远程会话运行脚本,所有事情都很好。

如何从脚本desploy.ps1中使用远程会话运行远程脚本deploysharepoint.ps1,就像使用powershell控制台一样?

1个回答

1

Invoke-Command是正确的答案。但是:

脚本显示错误,用户没有访问SharePoint Farm的权限。

如果TFS Build的用户帐户调用脚本(本地或远程),那么该帐户将用于确定权限。

因此,要么将用于运行构建的帐户更改为具有正确SharePoint权限的帐户,要么为TFS Build帐户授予必要的权限。


是的,我也这么认为,但如果我通过远程桌面连接到TFS构建服务器,并使用PowerShell控制台执行步骤,它就可以正常工作。就像执行脚本的用户不是TFS构建帐户一样。你知道有什么命令可以查看在poweshell远程会话中连接的用户吗?我没有使用凭据进行连接,因为我认为构建服务器使用TFS构建的用户帐户,但也许服务器正在使用其他帐户连接到远程机器。 - Javier Valero
我使用 TFS build 的用户帐户连接远程桌面到 TFS 机器,使用 PowerShell 控制台,一切正常。但在远程服务器上运行脚本失败了。我的猜想是:
  1. 如果脚本没有凭据,则 PowerShell 不会使用远程桌面中已登录的用户的凭据。
  2. 像 1 那样,构建过程也是如此。
如果您知道一些命令来查看远程 PowerShell 会话中连接的用户,那将非常有帮助。
- Javier Valero
确认这是Sharepoint Farm的安全问题,因为如果我使用其他用户就没有问题。现在是时候检查Sharepoint Farm管理员组中的用户问题了,因为我可以看到TFS构建用户已经添加进去了。谢谢。 - Javier Valero
@JavierValero:评论#2:这就是你需要的测试。使用你自己的帐户证明不了什么,你需要使用自动化构建所使用的相同帐户。如果与交互会话一起工作而批处理没有,则添加日志以查找第一个失败并专注于解决该问题(逐个解决问题)。 - Richard
问题与Sharepoint配置数据库的权限有关,Tfs-Build和powershell脚本都没问题。 - Javier Valero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接