IPC端口访问被拒绝

时间:2016-01-06 15:37:07

标签: windows powershell mstest powershell-remoting

我试图通过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中有详细说明,但未经过解决。

1 个答案:

答案 0 :(得分:0)

我发现MSTEST.EXE的/noisolation选项修复了这个问题 - 可能是因为它避免了QTAgent32_40.exe进程的产生以及对IPC频道的需求。