我正在尝试通过PowerShell中的mstest
远程执行Invoke-Command
。脚本块中的PowerShell命令是带有单个测试容器和指定结果文件的基本mstest
调用。如果从远程服务器上的RDP内部运行,它将正常工作。
但是,如果我通过Invoke-Command
远程运行它,mstest
返回一个异常
在远程计算机上查看事件查看器时,我看到了一系列异常,从以下开始:
(QTAgent32_40.exe,PID 2432,线程1)AgentProcess:无法获取代理进程代理:System.Runtime.Remoting.RemotingException:无法连接到IPC端口:访问被拒绝。
服务器堆栈跟踪:
在System.Runtime.Remoting.Channels.Ipc.IpcPort.Connect处(字符串portName, bool(boolean) 安全性,TokenImpersonationLevel模拟级别,Int32超时)
在System.Runtime.Remoting.Channels.Ipc.ConnectionCache.GetConnection(字符串portName, bool(boolean) 安全,TokenImpersonationLevel级别,Int32超时)
在System.Runtime.Remoting.Channels.Ipc.IpcClientTransportSink.ProcessMessage(IMessage消息,ITransportHeaders requestHeaders,流requestStream,ITransportHeaders&responseHeaders,Stream&responseStream)
在System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage消息)
异常重新引发为[0]:
在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)
在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)
在Microsoft.VisualStudio.TestTools.Agent.IAgentProcessManagerAccessManager.GetAgentProcessProxy(String executionKey)
在Microsoft.VisualStudio.TestTools.Agent.AgentProcess.GetAgentProcessProxy()
我正在使用Invoke-Command
使用与RDP相同的凭据执行命令(在该 session 中命令成功执行)。另外,在Invoke-Command
脚本块中,如果我调用whoami /priv
,则会看到带有23个特权名称的响应。根据我以前的研究,这意味着我正在参加较高级别的比赛。 Invoke-Command
使用身份验证=协商。
我认为这不是防火墙问题,因为我可以从脚本块中成功运行其他命令,而不仅仅是mstest
,因此PowerShell session 正在远程计算机上启动。
请注意,这在this forum post中有详细说明,但没有解决方法。
最佳答案
我发现MSTEST.EXE的/noisolation
选项可以解决此问题-可能是因为它避免了QTAgent32_40.exe进程的产生,因此也消除了对IPC通道的需要。
关于windows - IPC端口访问被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34636953/