我试图通过PowerShell中的mstest
远程执行Invoke-Command
。 scriptblock中的PowerShell命令是一个基本的mstest
调用,它包含一个测试容器和一个指定的结果文件。如果从远程服务器上的RDP内运行,它可以正常工作。
但是,如果我通过Invoke-Command
远程运行它,mstest
会返回异常
无法对测试运行进行排队' Administrator @ AEPRFDLY00ALL00 2016-01-06 10:22:40':无法启动代理进程。
查看远程计算机上的事件查看器,我看到一系列例外,从:
开始(QTAgent32_40.exe, PID 2432, Thread 1) AgentProcess: Failed to get agent process proxy: System.Runtime.Remoting.RemotingException: Failed to connect to an IPC Port: Access is denied. Server stack trace: at System.Runtime.Remoting.Channels.Ipc.IpcPort.Connect(String portName, Boolean secure, TokenImpersonationLevel impersonationLevel, Int32 timeout) at System.Runtime.Remoting.Channels.Ipc.ConnectionCache.GetConnection(String portName, Boolean secure, TokenImpersonationLevel level, Int32 timeout) at System.Runtime.Remoting.Channels.Ipc.IpcClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream) at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.VisualStudio.TestTools.Agent.IAgentProcessManagerAccessManager.GetAgentProcessProxy(String executionKey) at Microsoft.VisualStudio.TestTools.Agent.AgentProcess.GetAgentProcessProxy()
我正在使用Invoke-Command
使用与RDP相同的凭据执行命令(命令成功的会话中)。另外,在Invoke-Command
scriptblock中,如果我调用whoami /priv
,我会看到一个包含23个权限名称的响应。根据我以前的研究,这意味着我在高级会话中运行。 Invoke-Command
正在使用Authentication = Negotiate。
我不认为这是防火墙问题,因为我可以成功运行scriptblock中的其他命令,而不是mstest
,因此PowerShell会话正在远程计算机上启动。
请注意,这在this forum post中有详细说明,但未经过解决。
答案 0 :(得分:0)
我发现MSTEST.EXE的/noisolation
选项修复了这个问题 - 可能是因为它避免了QTAgent32_40.exe进程的产生以及对IPC频道的需求。