我正在尝试使用 Team City 来使用 puppet for windows 来配置 Windows 2008 R2 机器。有一个 TC 代理应该远程连接并在我们的目标服务器中调用 puppet 客户端。我们尝试使用 Powershell,但在尝试以管理员身份执行 puppet 时遇到问题,因此我们创建了一个 C# 代码实用程序来重定向输出,但它似乎无法在 TC 上运行,但它可以在本地运行。
namespace RunAsAdmin
{
class Program
{
static void Main(string[] args)
{
Process proc = new Process();
Process p = new Process();
p.StartInfo.FileName = @"psexec.exe";
p.StartInfo.Arguments = "/accepteula \\\\" + args[0] + " -s \"C:\\Program Files (x86)\\Puppet Labs\\Puppet\\bin\\puppet.bat\" agent --test --no-daemonize --verbose --logdest console ";
p.StartInfo.Verb = "runas";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();
while (p.HasExited == false) {
Console.WriteLine(p.StandardOutput.ReadLine());
}
Console.ReadLine();
p.WaitForExit();
p.Close();
}
}
}
该代码在本地和 TC 中完美运行,以管理员身份执行没有问题,但我们在 TC 中看不到构建输出。