为什么在构建服务器上安装Azure SDK 2.1或powershell 3会破坏我们在powershell中运行的一些测试?

为什么在构建服务器上安装Azure SDK 2.1或powershell 3会破坏我们在powershell中运行的一些测试?,powershell,azure,powershell-3.0,build-server,Powershell,Azure,Powershell 3.0,Build Server,我们有一些测试在一些文件上执行powershell脚本,以确保脚本正确处理文件 这是一个例子: [TestMethod] [DeploymentItem(@"BuildScripts\CheckForFxCop.ps1")] [DeploymentItem(@"TestData\TestWithIncorrectFxCop\TestWithIncorrectFxCop.csprojext", "TestWithIncorrectFxCop")] public vo

我们有一些测试在一些文件上执行powershell脚本,以确保脚本正确处理文件

这是一个例子:

    [TestMethod]
    [DeploymentItem(@"BuildScripts\CheckForFxCop.ps1")]
    [DeploymentItem(@"TestData\TestWithIncorrectFxCop\TestWithIncorrectFxCop.csprojext", "TestWithIncorrectFxCop")]
    public void WhenFxCopHasWrongValueFails()
    {
        string projectFileToTest = Path.Combine(Directory.GetCurrentDirectory(), "TestWithIncorrectFxCop", "TestWithIncorrectFxCop.csprojext");
        string scriptFileToExecute = Path.Combine(Directory.GetCurrentDirectory(), "CheckForFxCop.ps1");
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "powershell.exe",
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = false
        };
        startInfo.Arguments = string.Format(@"& '{0}' '{1}' csprojext", scriptFileToExecute, projectFileToTest);

        var process = new Process { StartInfo = startInfo };
        process.Start();

        ... assert some stuff...
    }
这些测试已经在构建服务器上运行了9个月

我们最近在一台服务器上安装了powershell 3,这使得所有这些测试都失败,原因是:

System.ComponentModel.Win32Exception: The system cannot find the file specified
在进程中抛出。开始行

我们暂时停止了在此服务器上运行的测试,只使用了未安装powershell 3.0的服务器

我们最近在其他构建服务器上安装了AzureSDK 2.1,现在所有服务器上都出现了同样的问题

如果我们以构建代理用户身份登录到构建计算机,并手动启动powershell并运行测试正在运行的命令,那么它似乎成功了


有人知道是什么原因导致这些测试失败了吗?或者您对如何诊断该问题有何想法?

您是否尝试过将完全限定的路径传递给startInfo.FileName,而不仅仅是Powershell.exe,以防更新后%path%出现问题


完全猜测,但您是否有可能遇到此答案中所示的FileSystemRedirector 32 vs.64问题-

因此该问题似乎与

CreateNoWindow = false
我们还有一些其他的测试,这些测试设置为true,并且成功了,关于将它们作为构建代理帐户运行,或者构建代理运行服务的事实更可能意味着它们失败了,但不确定为什么找不到文件是错误


无论如何,我想问题解决了。

对不起,我应该在问题中说,我们已经尝试通过完全限定的路径,但我们也检查了%path%,并且还可以。当我们在实际机器上手动运行时,路径解析。不过我会检查另一个答案,谢谢。文件系统重定向器似乎不是问题,因为powershell位于\system\和\syswow64\的同一个子目录中。procmon告诉您什么?它应该显示它在哪里查找文件。@kwill,这是个好主意。我会试着安排一下。