0

我正在使用 TFS 启动 PSExec 以运行创建安装程序的 InstallShield 进程。我们的 TFS 构建代理在 NETWORK SERVICE 帐户下运行。

我使用 -u -p 选项运行 PSExec,并且能够运行该命令并成功地从命令提示符针对远程计算机构建安装程序。

但是在 TFS 中,我总是收到 2250 错误代码并且安装程序无法构建。

为了隔离问题,我将 psexec 命令更改为以下...

PsExec.exe -accepteula \\<machine> -u <username> -p <password> xcopy /y c:\temp\testing.bat c:\temp\1.bat

如果我从命令行运行上述内容,它会复制文件。如果我从 TFS 运行上述内容(在批处理文件中调用上述内容),则会失败并显示 2250。

因此,为了模拟 TFS 正在做什么,我...

  1. 使用提升的管理员权限启动命令提示符
  2. 发布psexec -i -u "nt authority\network service" cmd.exe
  3. 运行包含上述 xcopy 命令的批处理文件

因此,第 2 步使用 NETWORK SERVICE 帐户启动命令提示符。当我从此命令提示符运行步骤 3 时,我收到了相同的 2250 错误。所以这是很好的 b/c 现在 TFS 已经不在了,我更接近真正的问题。

只是为了笑,我将 NETWORK SERVICE 添加到远程框的管理员组。那并没有解决问题。

所以这就是我所在的地方......

  1. 如果我使用管理员组中的登录名登录到 TFS 框,打开命令提示符,并使用 -u -p 参数运行 xcopy 命令批处理文件,一切正常。
  2. 如果我使用 NETWORK SERVICE 帐户启动 cmd 提示符并运行与步骤 1 中相同的批处理文件,我会收到 2250 拒绝访问。

所以在我看来,这个问题显然与 NETWORK SERVICE 帐户有关。问题是如何让 psexec 使用此帐户运行?

更新

以下对话框显示了管理员组中的 NETWORK_SERVICE 帐户,并且它具有对路径 (c:\temp) 的完全访问权限。

NETWORK_SERVICE 在管理员组中

在此处输入图像描述

4

1 回答 1

1

假设您的两台机器分别称为 TFSSERVER 和 TARGETMACHINE。

TFS 服务器上的 NetworkService 将被视为机器帐户,即DOMAIN\TFSSERVER$TARGETMACHINE 上的。NT AUTHORITY 组中的任何帐户都是本地帐户,因此看起来您刚刚将 TARGETMACHINE 的网络服务添加为管理员,而不是 TFS 机器的网络服务。

尝试将 TFS 计算机帐户添加到您的权限列表中,看看它是否有效。

如果没有,请查看此相关问题,看看是否有任何帮助您: PSEXEC,访问被拒绝错误

于 2014-12-02T09:25:55.550 回答