我有一个在Hyper-V主机上运行的代理,该主机应该运行我要求它从远程系统运行的自定义PowerShell cmdlet。我观察到的是,当我RDP到主机并在powershell窗口上执行它时,自定义PowerShell cmdlet花费的时间非常少。但是当从代理调用它时,执行时间大约需要10倍。
代理创建PowerShell对象并使用AddScript方法将要执行的脚本添加到它,最后执行BeginInvoke然后循环,直到异步调用的结果已完成(asynccmd.IsCompleted)。命令完成需要很长时间。我不确定为什么要花时间,因为我已经确认手动运行该命令不会花费那么多时间。
非常感谢任何帮助。我没有共享代码,因为我不确定它会有什么帮助,因为我得到的结果很好。如果您有任何疑问,请告诉我。在此先感谢您的帮助。
编辑:让问题更清晰。
因此代理程序是用C#编写的,并且作为Windows服务运行。从该Windows服务创建Powershell对象,并使用异步运行的BeginInvoke调用调用该命令,这是我认为需要时间的函数。我想我可以使用windbg进行调试,但我并不完全确定。