最近的一个项目会用到C#执行PowerShell脚本。
执行PowerShell脚本前需要先SnapIn一些SDK的dll,此过程每次都会占用5秒左右的时间。
目前我有两个方法:
1.声明一个单例的Runspace对象,这样的话只需要SnapIn一次就可以了。但是执行PowerShell命令是需要做队列,无疑降低了执行效率。
2.每次执行PowerShell命令时都使用新的Runspace对象,这样一来可以并行执行PowerShell命令,但每次执行前都需要花时间SnapIn。
各位是否有更好的解决办法?
可以多线程并且维护一个SnapIn的池,后台线程初始化一些SnapIn,你的ps执行从池里面取。